C# -Schlüsselwort Verwenden implementiert Idisposable, das einen Mechanismus für Freigabe nicht verwalteter Ressourcen bereitstellt.Verwenden von Schlüsselwörtern und verwaltete Unverwaltete Codes
nun durch diesen Code i wurde
string txt = String.Empty;
using (StreamReader sr = new StreamReader(filename)) {
txt = sr.ReadToEnd();
}
und kann nicht aufhören fragen, warum geht das Schlüsselwort Verwendung in diesem Code verwendet wird, während Stream verwaltete Ressource ist, und es liegt in der Verantwortung des Garbage Collectors, um den Speicher des Objekts freizugeben, nachdem sein Bereich überschritten wurde.
Also meine Frage ist,
- Ist der obige Code einfach eine explizite Weise
- Gemäß meinem Verständnis alle Methoden oder Klassen zu befreien Ressourcen Umgang, die wir unter dem .NET Framework verwenden, ist ein Managed Code, dann ist StreamReader auch nicht unter verwalteten Code.
- Fehle ich etwas auf dem verwalteten \ Unmanaged Code
die '' StreamReader'' möglicherweise unter Verwendung werden in es Implementierung sind einige nicht verwalteten Ressourcen, so dass es stellen sicher, dass sie entsorgt werden, wenn sie mit –
verpackt werden.In dem von Ihnen bereitgestellten Beispiel wäre dies das Dateihandle, mit dem die Datei zum Lesen geöffnet wird. – stuartd
Datei-E/A ist ein betriebssystemspezifischer Dienst. In Windows wird ein Handle-Ansatz verwendet, Griffe müssen geschlossen werden. –