Autocompletar la enumeración del interruptor


Estaba escribiendo un switch con una enumeración en VS 2013 y todas las declaraciones de casos se completaron automáticamente después de terminar el switch. Ahora no puedo repetirlo. No estaba alucinando, el interruptor se llenó con todas las opciones de enumeración, una por caja, automáticamente. Miró a través de MS docs para VS 2013 y no lo encontró.

Utilizo bastantes enumeraciones y esta característica me ahorrará un montón de tiempo si puedo encontrar lo que hice para activarlo. Alguien puede ayudar?

Author: Metaphor, 2013-11-05

8 answers

Utilice el código sw (tab) (tab)

Espero que esto ayude,

 71
Author: Marvin Smit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-04 22:09:10

Aviso: Esta respuesta se aplica a realizar la autogeneración switch/enum mientras también se usa Resharper.

Usando Visual Studio 2013 y Resharper 8.2, los métodos mencionados anteriormente no funcionan. Aquí está cómo conseguir realmente esta generación para trabajar cuando se utiliza Resharper. Espero que le ahorre a alguien los quince minutos que acabo de pasar averiguando esto.

Realizar "sw (tab) (tab)" solo generará lo siguiente:

switch (nameOfEnumVariable)
{

}

Resharper puede generar las etiquetas usando Alt + Enter (si el cursor se encuentra en la instrucción switch) y seleccionando Generar etiquetas switch como en la siguiente captura de pantalla:


Usar el menú Resharper para completar una instrucción switch


El resultado se ve así:


introduzca la descripción de la imagen aquí


 93
Author: jmsb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-03 07:12:59

La respuesta seleccionada es en su mayoría correcta, no necesita Resharper como otros han sugerido (al menos no con Visual Studio Professional 2012+).

1) escriba " sw "luego" [tab] [tab] " (como Marvin Smit dijo)

Que (como jmblack dijo) generará algo como:

  switch (switch_on)
  {
            default:
  }

Pero luego

2) necesita seleccionar en qué cosa enumerar (switch_on se resaltará todavía en este punto). Así que escriba la enumeración (o su variable del tipo enumeración) mientras switch_on está resaltado y pulse [Enter][Enter].

(Acabo de confirmar que esto funcionó en mi máquina que ejecuta VS2012, y estoy bastante seguro de que esto es lo mismo que he hecho en mi otra máquina que ejecuta VS2013, y no he probado otras versiones de VS (ultimate/express/etc.))

 15
Author: 00jt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-19 14:19:08

Visual studio express 2012-sin Resharper:

1) escribir "interruptor"
2) presione dos veces LA pestaña, entonces verá:

switch (switch_on)
{
        default:
}

(switch_on está resaltado)
3) vuelva a escribir switch_on a su tipo DE ENUM (no es una variable de su tipo de enum, no funcionó para mí)
4) haga clic en otro lugar o presione entrar, ahora debería ver todos los elementos de enumeración llenos:

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) no olvides cambiar la entrada de tu switch..

 14
Author: chviLadislav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-25 11:43:30

De forma predeterminada, el fragmento de código de Visual Studion funciona correctamente. Debe escribir " sw "y luego presionar doble"Tab".

Si usas Resharper, el fragmento no funciona, porque el fragmento de Resharper tiene más prioridad, de forma predeterminada. Por lo tanto, debe desactivar el fragmento de resharper.

Vaya a "Resharper" -> "Template Explorer"-> "C#" y luego desmarque "switch". Prueba " sw "+ doble"Tab"

 3
Author: GSerjo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-04 22:26:26

He escrito una extensión libre y de código abierto, basada en Roslyn, para Visual Studio 2015 y 2017, que no solo permite llenar el caso de cambio para una enumeración, sino que también es capaz de agregar nuevos casos si se han agregado valores de enumeración (campos) a la definición de tipo de enumeración, o ordenar la lista de casos por valor o nombre.

Está disponible aquí: Enum Case Generator

Así es como se usa:

introduzca la descripción de la imagen aquí

 3
Author: Simon Mourier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-14 08:36:33

Creo que lo que necesitas es esto:

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

Lo probé y funciona ( al menos en VS2013).

 2
Author: marcelom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-18 16:02:05

Hola me encontré con el mismo problema, acabo de descubrir que cuando lo haces:

switch(nameofvariable){
  default:
  break;
}

Cuando esté llenando la variable y haga doble clic en la variable de su elección (la enumeración), le dará todos los casos

 1
Author: Cyril Delander,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-03 19:07:24