2013-11-04 129 views
57

我在VS 2013中輸入了一個具有enum的開關,並且在完成切換後所有case語句自動填充。現在我不能重複。我沒有幻覺,交換機會自動填寫所有枚舉選項,每個選項一個。通過MS文檔查看VS 2013,但沒有找到它。開關枚舉自動填充

我使用了不少枚舉,如果我能找到觸發它的功能,這個功能將爲我節省大量的時間。誰能幫忙?

+0

http://worthyd.com/techblog/index.php/2010/09/visual-studio-c-enum-switch-snippet-blew-my-mind/ – wudzik

回答

61

使用代碼剪斷SW(標籤)(標籤)

希望這有助於

+2

含義... .type'sw',intellisense會彈出提示你建立一個開關,點擊標籤,當它被突出顯示並再次選項卡,你將得到你的開關語句 – paqogomez

+9

你必須點擊一次,你鍵入的參數爲switch語句讓它自動生成case和break行,至少在枚舉的情況下。 – Marcus10110

+0

@ Marcus10110:或按回車鍵... – caesay

3

默認情況下,視覺Studion的片段工作正確。你應該輸入「sw」,然後按雙「Tab」。

如果您使用Resharper,則代碼段不起作用,因爲默認情況下,Resharper的代碼段具有更多優先級。所以,你應該關閉resharper的片段。

轉到「Resharper」 - >「模板資源管理器」 - >「C#」,然後取消選中「開關」。嘗試「sw」+雙「Tab」

+3

爲什麼Resharper認爲它的版本更好? – Daryl

+7

嗯...所以我沒有選中switch語句,它不允許雙選項卡自動填充枚舉 – Daryl

+2

然後,您可以禁用ReSharper的內置Intellisense功能。轉到Resharper菜單>選項>環境>智能感知>常規,然後選擇Visual Studio – neural5torm

92

注意:此答案適用於在使用Resharper時執行開關/枚舉自動生成。

使用Visual Studio 2013和Resharper 8.2,前面提到的方法不起作用。下面是如何在使用Resharper時真正讓這一代工作。希望它能爲我解決這個問題的十五分鐘時間省去一個人。

表演 「SW(標籤)(標籤)」 只會生成如下:

switch (nameOfEnumVariable) 
{ 

} 

ReSharper的可使用Alt鍵生成標籤+ Enter鍵(如果你的光標矗立在switch語句),並選擇生成開關標籤如以下截圖:


Using the Resharper menu to fill in a switch statement


結果看起來是這樣的:


enter image description here


+2

也適用於VS2010和ReSharper 8.2。謝謝=) –

+3

這使用VS2012和R#8.2做到了。謝謝你救了我頭痛。 – pqsk

+4

不適用於VS2012和R#8.2.3000.5176 ...「生成開關標籤」丟失,只有「CS1522 ...的選項」出現在Alt + Enter上。有什麼建議麼? –

13

選擇的答案多半是正確的,你不需要ReSharper的其他的建議(至少不與Visual Studio專業2012+)。

1)型 「SW」,然後 「[標籤] [標籤]」(如Marvin Smit所述)

哪個(如jmblack所述)將產生類似:

switch (switch_on) 
    { 
      default: 
    } 

但隨後

2)您需要選擇要枚舉的東西(switch_on將在此處突出顯示)。因此,輸入Enum(或枚舉類型的變量),然後輸入switch_on並點擊[Enter] [Enter]。 (我剛剛證實這個工作在我的機器上運行VS2012,我相當肯定這是我在我的另一臺機器上運行VS2013所做的相同的事情,我還沒有測試過其他版本的VS(最終/快遞/等))

11

Visual Studio速成2012 - 無ReSharper的:

1)寫的 「開關」
2)按兩次TAB,然後你會看到:

switch (switch_on) 
{ 
     default: 
} 

(SWITCH_ON是白標明)
3)重新鍵入SWITCH_ON您ENUM類型(不,它不工作對我來說)
4)單擊別處或者按輸入您的枚舉類型的變量,現在你應該看到所有枚舉項目填補:

switch (YOUR_ENUM_TYPE) 
{ 
    case YOUR_ENUM_TYPE.Item1: 
     break; 
    case YOUR_ENUM_TYPE.Item2: 
     break; 
    case YOUR_ENUM_TYPE.Item3: 
     break; 
    default: 
     break; 
} 

5)不要忘記設置開關的輸入..

1

我寫了一個免費和開源擴展,基於Roslyn,爲Visual Studio 2015年和2017年,這不僅可以填補開關箱的枚舉,但是如果枚舉值(字段)已添加到枚舉類型定義中,或者按值或名稱對案例列表進行排序,則還可以添加新案例。

這是可以在這裏找到:Enum Case Generator

這是如何使用它:

enter image description here

+0

這工作得很好,並且是唯一對我有用的答案。 – Henry

0

我想你需要的是這樣的:

sw(tab)(tab)enumVariableName(tab)(downArrow) 

我測試和工程(至少在VS2013)。

0

您好我只是碰到了同樣的問題,我只是發現,當你做:

switch(nameofvariable){ 
    default: 
    break; 
} 

當你填寫你的選擇(枚舉)的可變的變量,而您雙擊它將給你所有的案件