Milyen két kritérium? Szó nincs két kritériumról. De azt mondtad, hogy a using használatával determinisztikus lesz az objektum felszabadítása (idézek: „Ha valaki megvalositja az IDisposable-t es a using konstrukcioval hasznalja az objektumot, akkor annak az egy szem objektumnak a felszabaditasa mar determinisztikus lesz (a Dispose() meghivodik, amikor a vegrehajtas elhagyja a using scope-jat).”).
Nem, ettől nem lesz az osztály felszabadítása determinisztikus, csak egy adott függvény garantáltan meghívódik a blokk végén. Ezt pedig más konstrukciókban is meg tudod oldani. A GC-t meg nem is tudom, minek kevered ide, mert az egész IDisposable, AutoClosable, using, try-with-resources dolognak semmi, de az égegyadta világon kívül semmi köze nincs a GC-hez.
> Es a finally-ban elfelejted a socketet zarni, akkor megszivtad, marad jo sokaig egy elerhetetlen Socket-ed nyitva.
Ha meg saját resource-kezelő osztályt írok, akkot a close() függvényt is implementálhatom rosszul. És?
> Nekem eros a gyanum, hogy a Java programok egy jo reszeben ezzel a gc-be patkolt close()-al tortenik az implicit eroforras management. Bar tobbnyire ez valid mukodest eredmenyez, de nagyon nem hatekony...
Fogalmad sincs arról, miről beszélsz. A close-nak semmi köze a GC-hez: a close nem fog meghívódni GC alatt.
Részemről a szál lezárva, mert mind a témát tereled, s mind a Java-.NET világ koncepcionálisan ismeretlen számodra. Ami alapvetően nem baj, csak akkor ne kezdj el olyan állításokhoz ragaszkodni, amire felhívják a figyelmedet, hogy nem igaz.
--
blogom