VB.NET Select...Case Istruzione equivalente in C#
-
20-09-2019 - |
Domanda
Ho appena iniziato a utilizzare C# e ho un paio di problemi.Esiste un modo per codificare l'equivalente C# dell'istruzione VB.NET Select come la seguente?
Select Object.Name.ToString()
Case "Name1"
'Do something
Case "Name2"
'Do something else
Case Else
'Do the default action
End Select
Qualsiasi aiuto sarebbe molto apprezzato.
Grazie per il contributo finora, che ne dici se collego diversi controlli a un gestore di eventi come nel seguente e desidero eseguire un'azione leggermente diversa per ciascun controllo:
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
Esiste un modo per eseguire l'istruzione select precedente in C# senza dover utilizzare if nidificati?
Soluzione
Sono venuto a trovare nel corso del tempo che alcuni costrutti Select...Case
VB.NET non si applicano in C # e l'unico modo per aggirare è quello di scrivere un sacco di IFS.
Per esempio, in VB.NET, è possibile scrivere:
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
Ma non c'è costrutto switch
in C # che ti permette di fare qualcosa di questo tipo. Dovrete codice in rotonda in questo modo:
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;
}
In alternativa, se vi capita di lavorare con Double
o qualsiasi tipo che si compone di una continua, invece di valori discreti, dovrete usare if
s per ottenere l'azione richiesta.
La ragione? switch
C # s 'impone costanti per i vari case
s. Questo è diverso da Select Case
di VB.NET che permette la scrittura gamme.
Altri suggerimenti
Dovresti cercare l'istruzione switch...
switch (Object.Name.ToString())
{
case "Name1":
//Do something
break;
default:
//default
break;
}
Tieni presente che le interruzioni sono importate, altrimenti il programma salterà i tuoi casi.Dovresti riuscire a trovarlo in quasi tutte le introduzioni in C#...
switch
dichiarazione.
switch (object.Name.ToString()) {
case "Name1":
break;
//Do something
case "Name2":
break;
//Do something else
default:
break;
//Do the default action
}
E non dimenticate che c'è una libero strumento di conversione online che permette di convertire VB.net per C # e viceversa.
Con C # 7, interruttore è stato notevolmente migliorato , ed è ora possibile applicare più condizioni all'interno dei casi, anche se è ancora non come "pulito" come la versione VB. Per esempio. si potrebbe fare qualcosa di simile:
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;
}
Tratto da / References: