2014-02-28 21 views
-2

考慮下面的代碼,有人可以向我解釋爲什麼以及爲什麼不使用'using'? 我已閱讀IDisposable的經驗法則,但爲什麼IDisposable是決定性因素?瞭解C#正確使用'using'關鍵字

private string GetWMIProperty(string property) 
{ 
string value = string.Empty; 
SelectQuery selectQuery = new SelectQuery("Win32_OperatingSystem"); 
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery)) 
{ 

    foreach (ManagementObject mo in searcher.Get()) 
    { 
    value = mo[property].ToString(); 
    } 
} 
return value; 
} 
+0

繼承'Component'繼承'IDisposable'。通常那些被包裝在'Usings'中。 – Brad

回答

2

using轉化爲try-finally塊。所以即使在例外的情況下也會調用Dispose封閉對象的方法。

請參見:using Statement (C# Reference)

using語句確保被處置,即使當你調用對象的方法發生 異常調用。你可以通過將對象放在一個try塊中並且然後在finally塊中調用Dispose來實現相同的結果;然後你可以通過 來獲得相同的結果。實際上,這是編譯器如何翻譯 使用語句。

0

這不是必然的決定因素。 IDisposable僅僅要求對象實現void Dispose()。實際上,實施IDisposable的許多對象甚至不「什麼時候」處置「。您必須閱讀文檔或查看每種情況下的反編譯代碼,以確定是否值得處理對象,無論是使用using還是致電Dispose()

更直接地回答你的問題,你可能需要使用using如果有問題處置對象清理一些資源(打開文件,數據庫連接,等等)。