2010-03-26 85 views
0

我經常發現自己對面的代碼來是這樣的:重構實例聲明中的方法

try 
{ 
    StreamWriter strw = new StreamWriter(); 
} 

然而,try塊的範圍之外對對象的引用。我怎麼能重構(提取到Visual Studio中的字段說,沒有字段或東西)在try塊中的語句,以便它在try塊之上聲明,以便我可以在方法中的任何位置使用它?

謝謝

+0

你可以求助於普通的舊按Ctrl + C和Ctrl + V鍵;-) – 2010-03-26 15:22:13

回答

1

你只需要拆分聲明和賦值。如果你有ReSharper的,有做拆分的方法,但你必須手動將其移動:通常

StreamWriter strw = null; 
try 
{ 
    strw = new StreamWriter(); 
} 
catch() 
{ // ... 

,加入(技術上沒用)= null;是必需的,以及,以防止潛在的警告由於賦值處於不同的範圍,因此在賦值之前使用變量。不過,這取決於你如何使用數據。

此外,由於StreamWriter是IDisposable,因此您需要確保您有一個可處理的finally塊,或將整個用法放在using塊中。

+0

這不會編譯。 「strw」被聲明兩次。從try {}中刪除「StreamWriter」,它應該沒問題。 – Peter 2010-03-26 15:24:34

+0

@彼得:對不起 - 愚蠢的複製/粘貼錯誤。固定。 – 2010-03-26 15:25:04

+0

嗨。 StreamWriter只是一個示例類型,意識到IDisposable問題。謝謝:)我目前沒有Resharper,等待5.0的最終版本,所以我可以在2010年得到它。 – dotnetdev 2010-03-26 21:24:54

0
StreamWriter strw = null; 
try 
{ 
    strw = new StreamWriter(); 
} 

但對於StreamWriter(這是IDisposable)是更好的使用using -keyword:

using(StreamWriter strw = new StreamWriter()) 
{ 
    .. 
}