.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 PMP考试祝福语简短励志
17 温馨顺德婚礼祝福语简短
18 毕业贺卡老师祝福语简短