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