visual entre diferencia c# vb.net vb.net-to-c#

entre - VB.NET Select... Caso Equivalente en C#



visual basic (4)

Estarías buscando la declaración de cambio ...

switch (Object.Name.ToString()) { case "Name1": //Do something break; default: //default break; }

Tenga en cuenta que los saltos son importantes, de lo contrario el programa pasará por sus casos. Debería poder encontrar esto en casi cualquier introducción de C # ...

Acabo de empezar a usar C # y tengo un par de problemas. ¿Hay alguna forma de codificar el equivalente en C # de la declaración de VB.NET Select como la siguiente?

Select Object.Name.ToString() Case "Name1" ''Do something Case "Name2" ''Do something else Case Else ''Do the default action End Select

Cualquier ayuda sería muy apreciada.

Gracias por la entrada hasta ahora, ¿qué pasa si engancho varios controles a un controlador de eventos como en el siguiente y quiero realizar una acción ligeramente diferente para cada control:

Private Sub Button_Click(sender as Object, e as EventArgs) _ Handles button1.Click, Button2.Click ''do a general activity Select CType(sender, Button).Name Case button1.Name ''do something Case button2.Name ''do something else Case Else ''do the defalut action End Select End Sub

¿Hay alguna manera de hacer la declaración de selección anterior en C # sin tener que usar if anidados?


He llegado a descubrir con el tiempo que algunas construcciones de Select...Case VB.NET Select...Case no se aplican en C # y la única forma de evitarlo es escribir muchos ifs.

Por ejemplo, en VB.NET, puede escribir:

Dim num as Integer = 5 Select Case num Case 1 to 10 ''do something Case 11 to 20 ''do another thing Case Else ''do the default End Select

Pero no hay un constructo de switch en C # que le permita hacer algo de este tipo. Tendrás que codificar en rotonda así:

int num = 5; switch (num) { case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: //do something break; case 11: case 12: case 13: case 14: case 15: case 16: case 17: case 18: case 19: case 20: //do something else break; default: //do the default break; }

O si está trabajando con Double o cualquier tipo que esté compuesto de valores continuos en lugar de valores discretos, deberá usar if para obtener la acción requerida.

¿Razón? El switch C # requiere constantes para los diversos case s. Esto es diferente del Select Case de VB.NET que permite rangos de escritura.


Utilice una instrucción de switch .

switch (object.Name.ToString()) { case "Name1": break; //Do something case "Name2": break; //Do something else default: break; //Do the default action }

Y no olvide que hay una herramienta de conversión en línea gratuita que le permite convertir VB.net a C # y viceversa.


Con C # 7, el interruptor se ha mejorado significativamente , y ahora es posible aplicar más condiciones dentro de los casos, aunque todavía no es tan "limpio" como la versión VB. Por ejemplo, podrías hacer algo como:

switch (examScore) { case int es when es >= 90: grade = "A"; break; case int es when es >= 80: grade = "B"; break; case int es when es >= 70: grade = "C"; break; case int es when es >= 60; grade = "D"; break; default: grade = "F"; break; }

Tomado de / Referencias: