C#里using的作用------释放资源

时间:2020-12-27 03:39:35

很高兴今天看到一个可以拿出来分享的知识点,那就是using的使用。

其实关于using的作用,我想大家最多的用在引入命名空间。:)其实我在这之前也跟大家一样,不过今天在看一个小例子后,则让我产生了疑问。好拉,我先把代码附上吧。

不知道上面的程序有没有一处让你比较困惑的呢,好拉,我就不卖关子了,我不懂的那一处如下:

using (StreamReader sr = new StreamReader("TestFile.txt"))

{...}

一开始我以为是引入命名空间什么的,不过带着怀疑的态度,我到Q群里提出我自己的疑问。好在在他们的帮助下,让我纠正了我之前的错误想法。其实我们在连接数据库的时候也经常会使用到using的语法,类似下面这句:
using (SqlConnection conn = new SqlConnection(source))
{
//code
}

千万不要以为任何地方的实例化都可以这样使用在using块里的哦,一般是在需要自动释放资源的地方才会用到。其实说需要自动释放资源,可能大家也不是很理解。这样说吧,你想要能这样使用using块的话,你需要保证满足下面一点:

(1)此类实现了接口IDisposable(这个接口只有一个方法void Dispose()),当这个类在using中实例化的时候,using代码块结束时会自动调用这个类中实现了接口IDisposable的Dispose()方法。Dispose()方法中常用来做些释放资源的动作

看看下面的一个简单的例子:

这里输出的结果是:

Disposable is open!
Disposable is close!
Disposable is none!

好拉,今天的执笔就到此为止,谢谢大家!