using( System.Drawing.Bitmap bit = new System.Drawing.Bitmap(200, 60));
看见别人这么写代码!!还不知道这个using是什么含义!!请哪位大虾指教一下!!
下次代码贴全了吧,using(var va){}。表示声明一个变量va,其作用域为接下来的{}语句块。作用域结束之后自动释放所有资源。此写法常见于外设资源的使用,如文件资源、数据库资源、网络资源、设备资源等等
到“}”就回收资源。
销毁内存资源吗??
@unbreakable: 嗯。以前需要写this.close()的,现在不需要写了。
像DataReader,Stream等资源,使用完毕后必须通过dispose方法释放,用use就免去了这一过程,使用结束后自动释放资源
提供能确保正确使用IDisposable对象的方便语法。
g (Font font1 = new Font("Arial", 10.0f)) {
.. byte charset = font1.GdiCharSet;
}
File和Font是访问非托管资源(本例中为文件句柄和设备上下文)的托管类型的示例。有许多其他类别的非托管资源和封装这些资源的类库类型。所有这些类型都必须实现IDisposable接口。
按照规则,当使用 IDisposable 对象时,应在 using 语句中声明和实例化此对象。using 语句按照正确的方式调用对象上的 Dispose 方法,并(在您按照前面所示方式使用它时)会导致在调用 Dispose 时对象自身处于范围之外。在 using 块中,对象是只读的并且无法进行修改或重新分配。
using 语句确保调用 Dispose,即使在调用对象上的方法时发生异常也是如此。通过将对象放入 try 块中,并在调用 finally 块中的 Dispose,可以获得相同的结果;实际上,这就是编译器转换 using 语句的方式。前面的代码示例在编译时将扩展到以下代码(请注意,使用额外的大括号为对象创建有限范围):
能using的都是继承了IDispose接口,你可以看看资料。
对于使用非内存资源的类,完全可以自己定义一个销毁资源的方法来供程序员回收,.net推荐实现IDisposable接口(为了规范非托管资源的回收),在Dispose方法中进行回收。
执行完using内的代码之后,销毁using使用的资源。