IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Problème avec la condition switch


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 62
    Points : 61
    Points
    61
    Par défaut Problème avec la condition switch
    Bonjour,

    Je viens de Visual basic 6 que j'ai utilisé durant 15 ans et je suis en train d'apprendre le C#, j'en suis à mon premier exercice et je bloque sur l'utilisation de switch

    J'ai tenté le bout de code suivant mais apparemment, switch n'accepte pas que l'on passe d'un case à l'autre si dans l'un d'entre eux on a un break.

    Erreur : Erreur 1 Le contrôle ne peut pas passer d'une étiquette case ('case 1:') à une autre

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
                switch (DateTime.Now.DayOfWeek)
                {
                    case DayOfWeek.Monday:
                        if (iCurrentHour < 9)
                        {
                            Console.WriteLine("Bon weekend " + sUserName);
                            break;
                        }
                    case DayOfWeek.Friday:
                        if (iCurrentHour > 18)
                        {
                            Console.WriteLine("Bon weekend " + sUserName);
                            break;
                        }
                    case DayOfWeek.Tuesday:
                    case DayOfWeek.Wednesday:
                    case DayOfWeek.Thursday:
                        if (iCurrentHour < 9 && iCurrentHour > 18)
                            Console.WriteLine("Bonjour " + sUserName);
                        else
                            Console.WriteLine("Bonsoir " + sUserName);
                    break;
                    case DayOfWeek.Saturday:
                    case DayOfWeek.Sunday:
                        Console.WriteLine("Bon weekend " + sUserName);
                        break;
                }

    Dans mes deux premiers case je teste si on est toujours durant le weekend cad lundi avant 9 h et vendredi après 18 h. Si c'est le cas, j'affiche bon weekend, sinon on est en semaine et je passe au case suivant.

    Je ne recherche pas la solution à mon exercice, simplement une explication sur l'erreur.

    Merci d'avance pour vos éclaircissements.

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Le break doit être en-dehors de ton IF. Pourquoi ? Parce que si jamais tu ne rentres pas dans le IF, le compilateur ne rencontrera jamais l'instruction break, donc il ne pourra pas passer au case suivant.

    Ou alors, tu dois rajouter un else à ton IF et y mettre également un break.

    Ce qu'il faut comprendre au final, c'est que dans tous les cas, il faut passer sur une instruction break.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2013
    Messages : 62
    Points : 61
    Points
    61
    Par défaut
    Merci pour ta réponse.

    Venant du VB6 ou l'on peux mettre plusieurs conditions dans un case, j'ai eu un peu de mal, mais maintenant tout est bon.

    EDIT : après vérification c'était le cas aussi en C/C++.

    Ca va faire beaucoup de changement pour moi.

  4. #4
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Pour travailler en VB6, C# et VB.NET encore maintenant et on va dire de façon hebdomadaire, tu vas t'y faire très vite. Le principal étant d'avoir les connaissances requises du POO pour le .net et d'avoir bien à l'esprit que les classes en vb6 sont (presque) inexistantes.

    Pour ma part quelques noms d'oiseaux de temps en temps quand je met le ';' en fin d'instruction en vb ou que j'oublie de mettre les '{' '}' en C# ;-)
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Points : 625
    Points
    625
    Par défaut
    Salut,
    juste une petite précision :
    tu dois toujours mettre un "break" en fin de condition;
    MAIS tu peux remplacer ton "break" par un "Return" (pour sortir de ta méthode)
    ou un "throw Exception" pour gérer les erreurs

    je dis ça car ça peut être TRES pratique
    "Essayer est le premier pas vers l'Echec !" (Homer Simpson)

  6. #6
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Salut,
    juste une petite précision :
    tu dois toujours mettre un "break" en fin de condition;
    MAIS tu peux remplacer ton "break" par un "Return" (pour sortir de ta méthode)
    ou un "throw Exception" pour gérer les erreurs

    je dis ça car ça peut être TRES pratique
    Bonne remarque, mais attention s'il y a des ressources ouvertes à fermées.
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

Discussions similaires

  1. openForm, problème avec la condition
    Par Salsaboy60 dans le forum IHM
    Réponses: 1
    Dernier message: 12/02/2009, 21h59
  2. Problème avec une condition IF
    Par Invité dans le forum Windows
    Réponses: 11
    Dernier message: 12/02/2009, 16h17
  3. Problème avec une Condition Ou ||
    Par Jcpan dans le forum Débuter avec Java
    Réponses: 12
    Dernier message: 14/01/2009, 12h19
  4. Problème avec les conditions ''sous-ensemble d'un tableau''
    Par djangossoul dans le forum LabVIEW
    Réponses: 2
    Dernier message: 07/06/2007, 12h23
  5. Problème avec une condition
    Par ghan77 dans le forum Débuter
    Réponses: 2
    Dernier message: 16/12/2005, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo