2016-05-13 67 views
2

是否有重構一行代碼以使用類似於ReSharper提供的var關鍵字的快捷方式?Visual Studio 2015'use var'重構快捷方式

例如,如果你有下面的一段代碼:

public void Foo() 
{ 
    List<Tuple<int, object>> bar = new List<Tuple<int, object>>(); 
} 

ReSharper的可以把它格式化爲:

public void Foo() 
{ 
    var bar = new List<Tuple<int, object>>(); 
} 
+0

沒有我知道的,但哦,男孩不會那麼好!:) –

+0

我相信現在有一個代碼分析NuGet包包括那裏。你只需要去找到它。 –

+2

如果我是一個可能有一天需要閱讀你的代碼的同事,我會懇求你不要制定這樣的政策。我想在這個特定的例子中,'bar'的類型是顯而易見的,但是編譯器通常可以推斷出需要開發人員在其他代碼中挖掘的東西。 – adv12

回答

3

的Visual Studio不會有直接等同於許多ReSharper的重構工具。不幸的是,「使用var」是缺失的重構功能之一,至少從2015年開始。

您可以將此正則表達式用作窮人的重構。按Ctrl鍵 + ħ,然後鍵入

Search: (^\s*)\S[^=()]* (\w+\s*=) 
Replace: $1var $2 

"\S[^=()]* "部分,包括空間,在初始化前的聲明中,^\s*比賽縮進和\w+\s*=匹配變量的名稱和=匹配。

縮進被捕獲到$1組;變量和=被捕獲到$2。替換字符串使用兩個捕獲的字符串在中間格式化替換爲var

這招可以幫助您將整個文件很快:目視確認要「重構」應用到選定的項目,然後按按鈕轉到下一個聲明。

儘管這種方法有助於相對容易地創建宏,但自VS 2010起Visual Studio中已經放棄了對宏的內置支持,因此爲這種類型的重構手動創建快捷方式將需要安裝外部宏觀工具。

+0

那麼我仍然認爲這是一個黑客而不是「這裏的Visual Studio等同於ReSharper」。刪除我的downvote,但這不會得到upvote。 –

+1

@JimAho如果有一個Visual Studio等價於ReSharper,那麼ReSharper很難證明他們希望你支付他們的大錢,不是嗎? – dasblinkenlight

+1

@dasblinkenlight說我認爲作者很清楚他/她正在尋找一個快捷方式,就像Resharper一樣。 Resharper還重新映射了幾個CTRL +。命令,所以作者的等價要求並非不合理。 –

1

儘管現在還沒有直接的方法來做到這一點,但在未來的Rosalyn版本中,在Visual Studio appears to be on the way中支持此操作。

除了@ dasblinkenlight的回答,我會留意任何自定義的NuGet代碼分析器。如果顯示爲綠色錯誤,您可以通過快速操作有效地獲取快捷方式:Ctrl +

我還沒有找到一個(除了那個你正在尋找的exactly the opposite)。

相關問題