切换枚举自动填充


72

我在VS 2013中键入带有枚举的开关,完成开关后,所有case语句会自动填写。现在我不能重复了。我不是在迷幻,开关自动填充了所有枚举选项,每个案例一个。浏览了VS 2013的MS文档,但没有找到。

我使用了很多枚举,如果我能找到触发它的功能,此功能将为我节省大量时间。有人可以帮忙吗?


Answers:


91

使用代码片段sw(tab)(tab)

希望这可以帮助,


3
意思是.... type sw,会弹出提示信息,提示您构建一个开关,在突出显示时点击tab,然后再次点击tab,您将拥有switch语句
crthompson

13
键入switch语句的参数后,至少在枚举的情况下,必须单击才能自动生成大小写和换行符。
Marcus10110 2015年

2
VS2019还是一样
GregoryNeal

106

注意:此答案适用于在使用Resharper的同时执行开关/枚举的自动生成。

使用Visual Studio 2013和Resharper 8.2,上述方法无效。使用Resharper时,实际上是如何使这一代人工作的方法。希望它可以为我节省十五分钟的时间,节省了我的时间。

执行“ sw(tab)(tab)”将仅生成以下内容:

switch (nameOfEnumVariable)
{

}

Resharper可以使用Alt + Enter(如果光标位于switch语句中)并选择Generate switch labels生成标签,如以下屏幕截图所示:


Using the Resharper menu to fill in a switch statement


结果看起来像这样:


enter image description here



2
这也适用于VS2010和ReSharper 8.2。谢谢=)
Christian St

3
那是使用VS2012和R#8.2完成的。谢谢你让我头疼。
pqsk 2014年

5
对于我来说,不适用于VS2012和R#8.2.3000.5176 ...缺少“生成开关标签”,Alt + Enter上仅显示“ CS1522 ...的选项”。有什么建议?
VIS

谁能告诉我这是怎么工作的,因为我需要自定义此“ GenerateSwitchCases”函数..
ansar 2015年

交换机应该没有任何情况,以获得此生成选项。它将为枚举生成所有可能的情况。
Igoris Azanovas '16

23

所选答案大部分是正确的,您不需要像其他人建议的那样使用Resharper(至少在Visual Studio Professional 2012+中不需要)。

1)输入“ sw”,然后输入“ [tab] [tab]”(Marvin Smit如前所述)

哪一个(jmblack如前所述)将生成类似以下内容的内容:

  switch (switch_on)
  {
            default:
  }

但是之后

2)您需要选择要枚举的内容(此时switch_on仍将突出显示)。因此,在突出显示时键入Enum(或您的枚举类型的变量),switch_on然后按[Enter] [Enter]。

(我刚刚确认这可以在运行VS2012的计算机上正常运行,并且我相当确定这与我在运行VS2013的其他计算机上所做的相同,并且我没有测试过其他版本的VS(最终/表达/等。 ))


1
在VS2015中工作
UuDdLrLrSs

21

Visual Studio 2017、2019-不使用Resharper:

1)编写“开关”
2)按两次TAB键,那么您将看到:

switch (switch_on)
{
        default:
}

(将switch_on高亮显示)
3)重新键入switch_on您的枚举变量或键入
4)按ENTER或单击其他位置(按TAB键不起作用),现在您应该看到所有枚举项已填充:

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

5

我认为您需要的是:

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

我对其进行了测试并正常工作(至少在VS2013中)。


4

默认情况下,Visual Studion的代码片段可以正常工作。您应该键入“ sw”,然后按两次“ Tab”。

如果您使用Resharper,则该代码段将不起作用,因为默认情况下,Resharper的代码段具有更高的优先级。因此,您应该关闭Resharper的代码段。

转到“ Resharper”->“模板资源管理器”->“ C#”,然后取消选中“ switch”。尝试“ sw” +双“ Tab”


4
Resharper为什么会认为它的版本更好?
达里尔

7
嗯...所以我未选中switch语句,并且它不允许双选项卡自动填充枚举
Daryl

2
然后,您可以禁用ReSharper的内置Intellisense功能。转到Resharper菜单>选项>环境> IntelliSense>常规,然后选择Visual Studio
Neuro5torm

3

我为Visual Studio 2015和2017写了一个基于Roslyn的免费和开源扩展,它不仅允许为枚举填充转换条件,而且还可以在枚举值(字段)具有已添加到枚举类型定义中,或按值或名称对个案列表进行排序。

在这里可用: 枚举案例生成器

这是使用方法:

在此处输入图片说明


这很好,并且是唯一对我有用的答案。
爱丹(Aidan)

可以在已经创建开关之后使用它,这是最佳答案。
Thoryn Hawley '18

对于那些必须在边界之间映射枚举的不可避免的时间,这确实是一个非常节省时间的扩展。
菲尔

2

您好,我遇到了同样的问题,我发现当您这样做时:

switch(nameofvariable){
  default:
  break;
}

当您填充变量并且双击您选择的变量(枚举)时,它将为您提供所有情况


2

VS 2019 + resharper使用您的变量创建一个空开关。单击第一个大括号“ { ”,然后按ALT + Enter键,您将看到“生成开关标签”。屏幕截图如下:

生成开关标签

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.