Vb.net Selecione… Declaração do caso equivalente em C#
-
20-09-2019 - |
Pergunta
Comecei a usar C# e tenho alguns problemas. Existe alguma maneira de codificar o equivalente C# da instrução VB.NET Select como a seguinte?
Select Object.Name.ToString()
Case "Name1"
'Do something
Case "Name2"
'Do something else
Case Else
'Do the default action
End Select
Qualquer ajuda seria muito apreciada.
Obrigado pela entrada até agora e se eu conectar vários controles a um manipulador de eventos como a seguir e quero executar uma ação ligeiramente diferente para cada controle:
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
Existe alguma maneira de fazer a instrução SELECT acima em C# sem ter que usar o IFS aninhado?
Solução
Eu cheguei a encontrar com o tempo que algum vb.net Select...Case
As construções não se aplicam em C# e a única maneira de escrever é escrever muito IFS.
Por exemplo, no vb.net, você pode escrever:
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
Mas não há switch
Construa em C# que permite que você faça algo desse tipo. Você terá que codificar na rotatória assim:
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;
}
Ou se você estiver trabalhando com Double
ou qualquer tipo que seja composto de valores contínuos em vez de discretos, você terá que usar if
s para obter a ação necessária.
Razão? C#S switch
requer constantes para os vários case
s. Isso é diferente do VB.NET's Select Case
o que permite escrever faixas.
Outras dicas
Você estaria procurando a declaração de interruptor ...
switch (Object.Name.ToString())
{
case "Name1":
//Do something
break;
default:
//default
break;
}
Observe que as intervalos são importantes, caso contrário, o programa passará por seus casos. Você deve encontrar isso em quase qualquer Introdução C# ...
Use um switch
declaração.
switch (object.Name.ToString()) {
case "Name1":
break;
//Do something
case "Name2":
break;
//Do something else
default:
break;
//Do the default action
}
E não se esqueça que existe um ferramenta de conversão online grátis Isso permite que você converta o vb.net em c# e vice -versa.
Com C# 7, o switch foi significativamente aprimorado, e agora é possível aplicar mais condições nos casos, embora ainda não seja tão "limpo" quanto a versão VB. Por exemplo, você poderia fazer 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;
}
Retirado de / referências: