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

Dotnet Discussion :

Enum avec valeur unique


Sujet :

Dotnet

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut Enum avec valeur unique
    Bonjour,

    J'ai un enum et je voudrais mettre les valeurs que je veux. Or je ne dois jamais mettre deux fois la même valeur.
    Lors de la compilation si j'ai plusieurs fois la même valeur je voudrais que ca me fasse une erreure de compilation. Comment faire ?

    Existe-t-il un autre moyen en n'utilisant pas un enum ?

    Bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    enum{
    Tata = 86,
    Toto = 212,
    Titi = 523
    }
    Mauvais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    enum{
    Tata = 86,
    Toto = 212,
    Titi = 86
    }

    Merci de votre aide

  2. #2
    Membre chevronné Avatar de LooserBoy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 1 085
    Points : 1 977
    Points
    1 977
    Par défaut
    En dotnet, les enum sont des collections de valeurs.
    Pourquoi vouloir les redefinir?

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    Pour chaque page internet que je créé, je dois lui passer un int. Donc une valeur unique. Et chaque valeur doit être défini.

    Les valeurs sont regis par pleins de régles et ne peuvent être d'une forme simple 1 puis 2 puis 3...
    Les valeurs peuvent être dans n'importe quel sens (comme sur mon exemple)

  4. #4
    Membre chevronné Avatar de LooserBoy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 1 085
    Points : 1 977
    Points
    1 977
    Par défaut
    Ah Oki! En utilisant une hashtable, tu devrait peut-etre pouvoir faire ce que tu veux car c'est une collection de clés/valeurs et les clés sont obligatoirement uniques.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    Mais ca ne va pas planter lors de la compilation.

  6. #6
    Membre chevronné Avatar de LooserBoy
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 1 085
    Points : 1 977
    Points
    1 977
    Par défaut
    Seulement à l'execution...
    A la compil', j'ai fait quelques petits essais et je vois pas comment faire...

  7. #7
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Citation Envoyé par Oberown Voir le message
    Bonjour,
    J'ai un enum et je voudrais mettre les valeurs que je veux
    L'enum est très bien pour ça.
    Rien ne t'empêche de changer les valeurs de ton énum par la suite...

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    Citation Envoyé par Kelpan Voir le message
    L'enum est très bien pour ça.
    Rien ne t'empêche de changer les valeurs de ton énum par la suite...
    Le problème n'est pas là. C'est que je veux des valeurs uniques.

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par Oberown Voir le message
    Le problème n'est pas là. C'est que je veux des valeurs uniques.
    Je ne comprends pas ton problème : si tu définit un enum, par définition c'est au développement (sauf cas d'injection de code); donc tu mets des valeurs uniques, point barre.

    Quand bien même tes valeurs seraient "aliasées", cela ne changerait strictement rien au fonctionnement de ton application (sauf peut être dans un cas particulier de comparaison chaine sur un enum.parse suivi d'un ToString, mais il faudrait être un peu bizarre pour faire cela, plutôt que de tester la valeur directement).

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Points : 295
    Points
    295
    Par défaut
    Vu qu'on est plusieurs à travailler sur l'enum via logiciel de partage de code (CVS, VSS) Il n'est pas dit que deux personnes mettent le même numéro.

    En imaginant que l'enum est gros il faut vérifier à la main à chaque fois qu'il n'y ai pas plusieurs fois la même valeur.

    Et en imaginant qu'il y ai plusieurs enum où ont veut qu'il ai des identifiants unique il faut faire cette vérification. Donc source d'erreur.

  11. #11
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par Oberown Voir le message
    Vu qu'on est plusieurs à travailler sur l'enum via logiciel de partage de code (CVS, VSS) Il n'est pas dit que deux personnes mettent le même numéro.
    je suppose qu'il faut lire "ne mettent pas".

    En imaginant que l'enum est gros il faut vérifier à la main à chaque fois qu'il n'y ai pas plusieurs fois la même valeur.
    Pourquoi placer les valeurs dans ce cas, et ne pas les laisser se positionner toutes seules ? il y a une bonne raison ?

    Et en imaginant qu'il y ai plusieurs enum où ont veut qu'il ai des identifiants unique il faut faire cette vérification. Donc source d'erreur.
    Comme je te l'ai écrit supra, même en cas d'aliasing, il n'y a pas vraiment de raison que cela produise une erreur.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 72
    Points : 72
    Points
    72
    Par défaut
    Je ne suis pas sur d'avoir bien compris le fond du pb, mais si l'objectif est de s'assurer que les différents développeurs du projet n'écrivent pas la même valeur dans l'énum, pourquoi ne le font-ils pas eux mêmes, c'est tout de même de la responsabilité du développeur de s'assurer qu'il ne code pas deux fois la même chose, non ?

    Je ne comprend pas pourquoi, vous vous posez la question sur les valeurs de l'énum, puisque les valeurs sont issues d'un calcul un peu complexe, pourquoi, ne les calculez vous pas toutes de manière exhaustive une fois pour toute, le pb serait réglé définitivement.

    Sinon, si tu veux des valeurs uniques, je rejoins LooserBoy, l'utilisation des hastable est appropriée, un peu lourde, moins falice d'utilisation qu'un simple enum, mais les valeurs sont uniques.

    Oliv

  13. #13
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Citation Envoyé par Oberown Voir le message
    Le problème n'est pas là. C'est que je veux des valeurs uniques.
    Je suis d'accord avec olive-andre. C'est juste un problème d'organisation.

    Si par exemple tous les développeurs se mettent à créer des scripts de création de tables SQL chacun de leur coté, au moment de l'execution des scripts, tu n'auras pas de message d'erreur (si test de présence de la table, en début de script) qui va te dire que une table a été créée 2 fois (ou plus)

  14. #14
    Membre habitué Avatar de Nikoui
    Inscrit en
    Décembre 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Décembre 2007
    Messages : 119
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par Oberown Voir le message
    Le problème n'est pas là. C'est que je veux des valeurs uniques.
    Si tu veux des valeurs uniques, alors l'utilisation d'une HashTable (ou de tout autre type de controle) vérifiera cette unicité.

    Si j'ai bien compris, ton problème n'est pas d'avoir des valeurs uniques, mais plutot de faire ce test à la compilation et non à l'exécution.

    Si c'est bien ça le problème, je vois deux cas possibles :

    - soit tu acceptes que ce test soit fait au démarrage de l'application (et non à la compilation) -> un problème de configuration avec des valeurs dédoublées ? L'application refuse de démarrer avec un message explicite. Et comme tu vas forcément lancer ton application au moins une fois pour la tester avant d'envoyer les modifications aux utilisateurs, pas de soucis tu détecteras le problème.

    - soit c'est inconcevable de faire ce test lors de l'exécution, dans ce cas tu peux par exemple mettre un contrôle au niveau "process" : ton application ne vas pas lire ces valeurs dans un enum, mais dans un fichier (ou une BDD). Et les "gens qui modifient ces valeurs" devront obligatoirement suivre une procédure pour modifier ces valeurs (un soft dédié qui remplira le fichier et effectuera les controles, ou bien des contraintes en BDD qui assurerons l'unicité, etc).

  15. #15
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Et une fonction, à lancer en début de programme, qui parcourt l'ensemble des types de ton assembly, chope les type enum, compare les valeurs d'une même enum deux à deux et pète une exception customisée en cas d'égalité ? Ca me plait

Discussions similaires

  1. [XL-2010] Récupérer une liste avec valeurs uniques depuis une colonne
    Par Onkas81 dans le forum Excel
    Réponses: 5
    Dernier message: 08/08/2013, 19h46
  2. Liste dynamique avec valeur unique de selected
    Par livininchina dans le forum Langage
    Réponses: 2
    Dernier message: 31/08/2012, 16h43
  3. VBA: Erreur d'affichage listbox avec valeur unique
    Par polenade dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/07/2012, 20h34
  4. [XSD] attribut même nom avec valeur unique
    Par tiger360 dans le forum Valider
    Réponses: 4
    Dernier message: 08/01/2012, 23h32
  5. Jointure avec valeur unique
    Par zooffy dans le forum Développement
    Réponses: 6
    Dernier message: 22/09/2008, 17h23

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