這個聲明在C#中意味着什麼?使用什麼(object obj = new Object())是什麼意思?
using (object obj = new object())
{
//random stuff
}
這個聲明在C#中意味着什麼?使用什麼(object obj = new Object())是什麼意思?
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();
}
幾乎等同。在第一個樣本中,obj超出了範圍。第二,它仍然在範圍之內。類似於for-while等價。 – 2010-01-12 18:51:26
它是一種方法,範圍對象,因此Dispose方法被調用退出。這對於數據庫連接非常有用。如果對象沒有實現一次性編譯,將發生編譯時錯誤
using
確保分配的對象在使用塊之後正確放置,即使在塊中發生未處理的異常。
它爲什麼存在壽。
它存在於您關心其生命週期的類中,特別是類在操作系統中封裝資源並且想要立即釋放它的地方。否則,你將不得不等待CLR(非確定性)終結器。
例子,文件處理,數據庫連接,套接字連接,....
這是語法糖 – 2010-01-12 20:43:52
我不同意 - 這是一個衆所周知的模式,所以鼓勵共同的良好做法。 for循環也是語法糖 - 但它總是用於因爲它是一個常見的成語 也我試圖解釋爲什麼你看到它使用 - 爲什麼你會看到非糖的版本 – pm100 2010-01-12 23:46:34
以備將來參考,這是在C#規範的第8.13記載。 – 2010-01-12 20:28:58