Kezdo C#-s vagyok, szeretnek tisztazni par dolgot?
Azon tunodok, hogy a C#-ben nem kell felszabaditani semmilyen tombot. Ha van egy byte[]-om pl. nem kell foglalkozzak a felszabaditasaval. Meg akkor se ha kozben egy Exception-t dob a programom. Ezert nincsenek is destruktorok a C#-ben jol ertem?
Igen am, de a minap talalkoztam a "using" kulcsszoval, nem ertettem mire jo ez igy utana jartam, es azt csinalja hogy meghivja a Dispose-t. Es ez az a pont ami miatt ugy erzem hogy el lett baltazva a C#, mert nehany esetben igen is meg kell hivni a felszabaditast, akkor megis csak kene legyen destruktor benne? Ez egy tervezesi hiba lenne?





Nem érteni valamit és kérdezni szabad, de nem érzed egy kicsit bicskanyitogatónak, hogy 3 percnyi fejlesztői tapasztalatoddal kritizálsz valamit, amit több évtizedes tapasztalatú szakemberekből álló csapatok alkottak?
Az ilyet, mint Te úgy hívják felénk, hogy bohóc.





#2: nem érzek benne túl sok kritikát, csak feltételezés volt a tervezési hiba. Bár azt azért sokan belátják, hogy a C# nem a világ megváltója.
Egyébként OFF: Linuxosként mondom, hogy azt is nyilván szakemberekből álló csapat alkotta meg, csak a szakembereknek úgy látszik, valami nagyon beszívott logikájuk volt, amikor a parancsokat találták ki...
#3: A "tervezési hiba" az "nem túl sok kritika"?
Mi nem egy nyelvet beszélünk?





Miert, nektek nem ellentmondo az hogyha egy byte[] arrayt letrehozok, akkor nem kell felszabaditsak semmit. De ha pl. a BinaryWriter-t hasznalom, akkor mar fel kell szabaditsam a dolgokat Dispose-val??
Most akkor vagy legyen a programozora bizva hogy felszabaditja a memoriat, de akkor mindig. Vagy ha nem, akkor minden szabaduljon fel automatikusan. Valasztani kene, nem osszekeverni a kettot hogy egyszer igy egyszer ugy.





Alapvetően nem érted az "erőforrás" fogalmát.
A memória egy erőforrás.
Egy file egy erőforrás.
Egy socket egy erőforrás.
A C# a memória nevű erőforrás menedzselését veszi csak át a fejlesztőtől, sose állította magáról, hogy minden más erőforrás kezelését is megoldja.
Erre való a dispose, hogy az ilyen egyéb unmanaged erőforrásokat, mint egy filehandle, vagy egy socket, stb., te kezeld.





"Vagy akkor minden utasitas utan nezzem meg a dokumentacioban hogy meg kell-e hivni a Dispose-t hozza..."
Vagy megérted a logikáját.
Ahogy #8 is leírta (és egyébként sok helyen, könyvben, interneten, ahol a nyelvvel foglalkoznak, ez le van írva), hogy a memóriakezelés során valósul meg a szemétgyűjtés. De ez a legtöbb (talán az összes?) hasonló elven működő nyelvnél így van.
"vagy legyen a programozora bizva hogy felszabaditja a memoriat"
A BinaryWriter nem memória. (Oké, persze, van a memóriában adminisztratív információ róla, de rajta keresztül nem a memóriát, mint erőforrást éred el, hanem egy fájlt. Az meg nem a memória.)
Nem hiszem, hogy annyira nehéz megérteni, hogy mi szabadul fel magától, és mi nem.
Ha meg nem tetszik ez a fajta logika, létezik még rengeteg programozási nyelv a világon, amiben nincs szemétgyűjtés. Nem kell mindenkinek C#-ban, meg Javában programoznia. Ott van például a C++. Egy hatékony, szép nyelv, és jóval kevesebb dolgot vállal át a programozótól.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!