c#在托管和非托管资源中使用关键字
本文关键字:关键字 资源 | 更新日期: 2023-09-27 17:50:31
using关键字用于正确处置托管和非托管资源。
我不知道什么时候使用using关键字。
例如,使用用于管理资源,如Connection对象。
用于非托管资源,如:
using (Font font1 = new Font("Arial", 10.0f))
{
byte charset = font1.GdiCharSet;
}
使用using关键字是否有一般的经验法则?是否应该将它用于所有对象,以便正确处理它们?如何判断哪些对象是using关键字的主要候选对象?
使用using有一般的经验法则吗?
您应该在任何实现IDisposable
的类上使用它,无论资源是托管的还是非托管的。
作为一条规则,当你使用一个IDisposable对象时,你应该在using语句中声明并实例化它。using语句以正确的方式调用对象上的Dispose方法,并且(当您像前面所示的那样使用它时)在调用Dispose时,它还会导致对象本身超出作用域。在using块中,对象是只读的,不能修改或重新分配。
通常应该在类实现IDisposable
时使用。但是,在某些极端情况下需要避免使用它,例如在使用WCF时,如下所述。此外,如果您需要访问类中的其他地方的对象,您不能使用using
,因为它限制了对象的范围,因此您应该显式地处置您的对象。
我的一般经验法则:如果可以使用,就使用它。
什么时候可以使用?简而言之,当对象实现IDisposable
并且您在方法结束时使用它时。
上面描述的using关键字将在font1超出作用域时简单地调用Dispose。
尽管可能会有异常,但我认为你可以放心地假设,当一个类实现了IDisposable时,你应该在处理完对象后调用Dispose。
上面显示的结构将为您完成此操作。在其他情况下,您可能无法使用using,因为对象的生命周期超过了创建它的函数的生命周期。在这种情况下,手动处理是明智的。亲切的问候,Marwijn .