Contrôle de flux (C# et Java)

Mise à jour : novembre 2007

Les instructions de contrôle de flux, telles que les instructions if else et switch, sont très similaires en Java et en C#.

Instructions de création de branche

Les instructions de création de branche modifient le flux d'exécution du programme au moment de l'exécution selon certaines conditions.

if, else et else if

Ces instructions sont identiques dans les deux langages.

Switch, instruction

Dans les deux langages, l'instruction switch fournit plusieurs opérations de création de branche conditionnelle. Il existe tout de même une différence dans la mesure où Java vous permet de passer une étiquette case et d'exécuter la suivante, sauf si vous utilisez une instruction break à la fin de l'étiquette case. Toutefois, C# requiert l'utilisation d'une instruction break ou goto à la fin de chaque étiquette case. Si aucune n'est présente, le compilateur produit l'erreur suivante :

Le contrôle ne peut pas passer d'une étiquette case à une autre.

Notez que lorsqu'une étiquette case ne spécifie aucun code à exécuter lorsqu'elle est mise en correspondance, le contrôle passera à l'étiquette case suivante. Lorsque vous utilisez goto dans une instruction switch, vous pouvez uniquement accéder à un autre bloc case dans le même commutateur. Si vous souhaitez accéder au bloc case par défaut, vous devez utiliser goto default. Sinon, utilisez goto case cond, où cond est la condition de correspondance du bloc case auquel vous avez l'intention d'accéder. Une autre différence avec le switch de Java réside dans le fait que dans Java vous pouvez uniquement commuter sur des types d'entiers alors qu'en C# vous pouvez commuter sur une variable chaîne.

Par exemple, les éléments suivants seraient valides en C#, mais pas en Java :

static void Main(string[] args)
{
    switch (args[0])
    {
        case "copy":
            //...
            break;

        case "move":
            //...
            goto case "delete";

        case "del":
        case "remove":
        case "delete":
            //...
            break;

        default:
            //...
            break;
    }
}

Le retour de goto

En Java, goto est un mot clé réservé qui n'est pas implémenté. Toutefois, vous pouvez utiliser des instructions étiquetées avec break ou continue pour parvenir au même résultat que goto.

C# permet à l'instruction goto d'accéder à une instruction étiquetée. Notez cependant que pour accéder à une étiquette particulière, l'instruction goto doit se trouver dans la portée de l'étiquette. En d'autres termes, goto ne peut pas être utilisé pour sauter dans un bloc d'instruction, bien qu'il puisse sauter hors d'un bloc d'instruction, hors d'une classe, ou sortir du bloc finally dans les instructions try...catch. L'utilisation de goto est déconseillée dans la plupart des cas, comme il enfreint les pratiques recommandées en matière de programmation orientée objet.

Voir aussi

Concepts

Guide de programmation C#

Autres ressources

Visual C#

Langage de programmation C# pour les développeurs Java