2012-01-20 29 views
0

我敢肯定,那裏有答案......但在「C#使用」上搜索google會比你期望的複雜一點。對所有非原始對象使用「using」有什麼缺點嗎?

無論如何...只是真的開始學習這個方便的技術,有一天,好像我不會愚蠢到不能用於任何非原始對象我有我的代碼。

這是一個相當準確的語句,還是有一些缺點(稍微混亂的代碼之外)對幾乎所有的東西都使用「using」?

+3

你可以舉一個例子你如何使用「使用」? – DaveShaw

+1

'using'只適用於實現'IDisposable'的對象。嘗試搜索「何時使用IDisposable」,並找到答案。 –

+0

C#的'using'語句只能用於實現'IDisposable'的類。它所做的只是在塊的末尾調用對象的Dispose()實現。 –

回答

2

正如其他人所提到的,您只能在實現IDisposable的類型上使用using聲明。對於那些實施IDisposable類型,我見過的唯一的真正的缺點是由於這樣的事實:using隱式調用類型的Dispose()方法,因此,如果一個異常在調用拋出,有時很難趕上。

否則,我會推薦using實現IDisposable的類型,而不是使用try-catch-finally,因爲它使代碼更加緊湊和乾淨。

編輯:找到了一個不錯的msdn article解釋這個和其他陷阱。

+0

它不會編譯所有的類型實際上它是不適用的可能被視爲當然的缺點太... –

+0

是的。編輯我的答案澄清。 –

5

目前尚不清楚你的意思 - 如果你的意思是使用的語句,如:

using (SomeType x = new SomeType()) 
{ 
} 

那麼這是適用於IDisposable實現。

如果你的意思是使用指令這樣的:

using System.IO; 

然後是,我通常包含一個類型我想一個特定的源文件中使用的每個命名空間的指令。

相關問題