mardi 21 septembre 2010

Jouer avec le Switch -Tutoriel c#

Aujourd'hui, nous allons jeter un œil sur le switch. Plus précisément, nous allons voir certains des comportements les moins connus de l'instruction switch en C #.

1-
public void FaireUnSwitch(int nbr)
{
  switch (nbr)
  {
    case 0:
    case 1:
    case 2:
      Console.WriteLine("Je suis dans le cas 0, 1 ou 2!");
      break;
    case 3:
    case 4:
    case 5:
      Console.WriteLine("je suis dans le cas 3, 4 ou 5!");
      break;
  }
}
en écrivant le code de cette manière en regroupant les cases on dit que:

"pour 0,1,2 faire l'instruction X, et pour 3,4,5 faire l'instruction Y"


2-
public enum State { One, Two, Three, Four };

  switch (mystate)
  {
    case State.One:
      Console.WriteLine("Je suis dans l'etat: one!");
      break;
    case State.Two:
      Console.WriteLine("Je suis dans l'etat: two!");
      goto case State.Four;
    case State.Three:
      Console.WriteLine("Je suis dans l'etat: three!");
      goto case State.Two;
    case State.Four:
      Console.WriteLine("Je suis dans l'etat: four!");
      goto case State.One;
  }
en C# on a la possibilité de faire un goto vers un label (étiquette), ce qui veut dire qu'on peut  aller executer  n'importe quel case, nous voulons à tout moment .
si vous essayez d'executer le code precedant avec comme parametre mystate=three , vous aurez le resultat suivant :
Je suis dans l'etat: three!
Je suis dans l'etat: two!
Je suis dans l'etat: four!
Je suis dans l'etat: one!
Cool, non? c'est pas encore fini, nous avons un peu d'excitation en plus. Vous pouvez également utiliser cette instruction goto pour aller au bloc par défaut dans une instruction switch. Par exemple

public enum State { One, Two, Three, Four };

public static void FaireUnSwitch(State mystate)
{
  switch (mystate)
  {
    case State.One:
      Console.WriteLine("I'm in state one!");
      break;
    case State.Two:
      Console.WriteLine("I'm in state two!");
      goto default;
    case State.Three:
      Console.WriteLine("I'm in state three!");
      goto default;
    case State.Four:
      Console.WriteLine("I'm in state four!");
      goto default;
    default:
      Console.WriteLine("I'm at the default!");
      break;
  }
}
  Ici, dans tous les cas sauf pour State.One, nous allons au bloc default (par défaut) avant de quitter 


il faut bien faire attention lorseque on ecrit des saut explicites pareils  car  il est tres facile a entrer dans une boucle infinie ! .

En fait, le compilateur vous permet même de faire quelque chose aussi bête que cela:
public enum State { One, Two, Three, Four };

public static void DoASwitch(State mystate)
{
  switch (mystate)
  {
    case State.One:
      Console.WriteLine("I'm in state one!");
      goto case State.One;
  }
}
je suis sûr que vous pouvez voir qu'avec cette instruction goto une fois que le programme entre dans ce bloc de code, il ne va pas le quitter ;)

OK, c'est tout pour aujourd'hui , et j'espère bien que cet Article était utile , au moins pour les gens qui ne savaient pas les possibilités de Saut entre les blocs case en c#

Aucun commentaire: