C#关键字使用实现Idisposable它提供了一个机制,为 释放非托管资源。使用关键字和Managed UnManaged代码
现在我正想通过这个代码
string txt = String.Empty;
using (StreamReader sr = new StreamReader(filename)) {
txt = sr.ReadToEnd();
}
,并不能停止想知道,为什么使用在这个代码是用来同时的StreamReader是受管资源的关键字,这是责任垃圾收集器在其作用域结束后释放对象内存。
所以我的问题是,
- 是上面的代码简单的处理,以腾出资源
- 按我的理解,明确的方式,我们的.NET框架下使用任何方法或类是托管代码,那么StreamReader也不属于托管代码。
- 我失去了对管理\非托管代码
的''StreamReader''可能被使用在它的实现一些非托管资源的对象班,所以它将确保它们在使用 –
包裹时处理。所以在您提供的示例中,这将是用于打开文件以供阅读的文件句柄。 – stuartd
文件I/O是特定于操作系统的服务,在Windows中使用句柄方法时,句柄需要关闭。 –