Nein, er wollte damit sagen, dass es Klassen gibt, die dieses Interface implementieren und diese Methode anbieten. Die ist dazu da, um aufgerufen zu werden.Quote:
Wozu sollte ich IDisposable in meine Subs einbringen um zwischen durch Manuell Resourcen freizugeben, wenn die GC das für mich macht.
Und nur weil mein Stil nicht deinem entspricht ist es och lange nicht schlecht.
Der GC übernimmt, genau wie in Java, nur die Speicherverwaltung. Anderwertige externe Resourcen (Sockets, Files, unmanaged Objekte, ...) werden nicht dadurch verwaltet, denn der GC kann gar nicht wissen, wie lange man sie braucht.
Java/C# sind NICHT C++. In C++ wird beim Verlassen des Gültigkeitsbereichs der Destruktor aufgerufen. Nach dem RAII-Prinzip werden alle nötigen Resourcen im Konstruktor geladen und im Destruktor entladen.
Demnach kann man in C++ darauf einen Fick geben, denn das Objekt zerstört sich selbst, wenn der Destruktor aufgerufen wird, was automatisch beim Verlassen des Gültigkeitsbereiches passiert. Natürlich gilt das nicht für Resourcen, die mit new/malloc erzeugt wurden, aber das liegt daran, dass sie auch nicht ihre Gültigkeit verlieren (der Heap bleibt auch beim Verlassen einer Funktion erhalten).
In Java und C# gibt es dieses Prinzip nicht, denn jedes Objekt wird dynamisch erzeugt. Zwar wird eben, anders als in C++, permanent darauf geachtet, welche Speicherbereiche überhaupt noch benutzt werden und welche nicht und dementsprechend wird Speicher auch automatisch freigegeben, aber die initialisierten Daten eines Objektes bleiben erhalten. D.h., wenn das Objekt einen File-Handle auf eine Datei geöffnet hat, dann bleibt dieser im System registriert, denn eine Art Dispose/CloseHandle Funktion wird nicht automatisch aufgerufen.
Dafür bist du selbst verantwortlich (weshalb ich es relativ albern finde, wenn Leute die managed Sprachen dafür anpreisen, dass man sich nicht um den Speicher kümmern muss) und das zu ignorieren ist kein anderer Stil, sondern schlechter Stil.
Ich halte dir aber mal zugute, dass du es einfach nicht wusstest.