Question

Je viens de commencer à utiliser C # et j'ai quelques questions. Est-il possible de coder en C # équivalent de la déclaration VB.NET Sélectionnez comme suit?

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

Toute aide serait grandement appréciée.


Merci pour l'entrée jusqu'à maintenant ce que vous si je brancher plusieurs commandes à un gestionnaire d'événements comme dans ce qui suit et je veux effectuer une action légèrement différente pour chaque commande:

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

Est-il possible de faire l'instruction select ci-dessus en C #, sans avoir à utiliser ifs imbriquées?

Était-ce utile?

La solution

Je suis venu pour trouver au fil du temps que certaines constructions Select...Case VB.NET ne sont pas applicables en C # et la seule façon d'écrire est autour de beaucoup d'ifs.

Par exemple, VB.NET, vous pouvez écrire:

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

Mais il n'y a pas de construction switch en C # qui vous permet de faire quelque chose de ce genre. Vous devez coder en rond-point comme ceci:

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 si vous arrive de travailler avec Double ou tout autre type qui est composé de continu au lieu de valeurs discrètes, vous devrez utiliser ifs pour obtenir l'action requise.

La raison? C # de switch nécessite des constantes pour les différentes cases. Ceci est différent de celui de Select Case VB.NET qui permet l'écriture des plages.

Autres conseils

Vous seriez à la recherche de l'instruction switch ...

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

Notez que les pauses sont l'importation, sinon le programme baissera dans vos affaires. Vous devriez pouvoir trouver sur presque toute introduction C # ...

Utilisez une déclaration switch .

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

Et ne pas oublier qu'il ya un outil de conversion en ligne gratuit qui vous permet de convertir VB.net en C # et vice-versa.

Avec C # 7, le commutateur a été amélioré de manière significative , et il est maintenant possible d'appliquer des conditions plus dans les cas, même si elle est toujours pas aussi « propre » que la version VB. Par exemple. vous pourriez faire quelque chose comme:

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;
}

Tiré / Références:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top