这个语句在 C# 中是什么意思?
using (object obj = new object())
{
//random stuff
}
这意味着在块之后obj
执行IDisposible
并将被正确处理。using
它在功能上与以下内容相同:
{
//Assumes SomeObject implements IDisposable
SomeObject obj = new SomeObject();
try
{
// Do more stuff here.
}
finally
{
if (obj != null)
{
((IDisposable)obj).Dispose();
}
}
}
using (object obj = new object())
{
//random stuff
}
相当于:
object obj = new object();
try
{
// random stuff
}
finally {
((IDisposable)obj).Dispose();
}
为什么它存在。
它存在于您关心其生命周期的类,特别是当类在操作系统中包装资源并且您希望立即释放它时。否则,您将不得不等待 CLR 的(非确定性)终结器。
示例,文件句柄,数据库连接,套接字连接,......
这是一种限定对象范围的方法,因此在退出时调用 dispose 方法。特别是对于数据库连接非常有用。如果对象没有实现 idisposable 则会发生编译时错误
using
确保分配的对象在 using 块之后被正确处理,即使在块中发生未处理的异常时也是如此。