.NET Framework 非托管资源
示例
当我们谈论GC和“堆”时,我们实际上是在谈论托管堆。托管堆上的对象可以访问不在托管堆上的资源,例如,在写入或读取文件时。当打开文件进行读取然后发生异常时,可能会发生意外行为,从而导致文件句柄无法正常关闭。因此,.NET要求非托管资源实现该IDisposable接口。该接口具有一个Dispose不带参数的单一方法:
public interface IDisposable
{
Dispose();
}处理非托管资源时,应确保正确处理它们。您可以通过显式调用执行此操作Dispose()在一个finally块,或者用一个using声明。
StreamReader sr;
string textFromFile;
string filename = "SomeFile.txt";
try
{
sr = new StreamReader(filename);
textFromFile = sr.ReadToEnd();
}
finally
{
if (sr != null) sr.Dispose();
}要么
string textFromFile;
string filename = "SomeFile.txt";
using (StreamReader sr = new Streamreader(filename))
{
textFromFile = sr.ReadToEnd();
}后者是首选方法,在编译过程中会自动扩展为前者。
热门推荐
10 祝女儿简短祝福语大全
11 大学新年祝福语简短创意
12 元旦适合的祝福语简短
13 朋友出远门祝福语简短
14 初六简短的祝福语
15 祝男孩生日祝福语简短
16 同事调离的祝福语简短
17 拜年红包的祝福语简短
18 妈妈生日祝福语简短励志