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

 .NET Discussion :

Cherche a verifier les Objets dans ma bibliotheque ? [C#]


Sujet :

.NET

  1. #1
    Membre à l'essai Avatar de Scommel
    Homme Profil pro
    programmeur debutant
    Inscrit en
    Novembre 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Canada

    Informations professionnelles :
    Activité : programmeur debutant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 10
    Points : 12
    Points
    12
    Par défaut Cherche a verifier les Objets dans ma bibliotheque ?
    Bonjour,

    Donc le but est des savoir si l objet existe deja dans ma bibliotheque ou pas !! pour cela j utilise une methode qui supposée allez cherche ma bibliotheque est apres ca j utilise un foreach accompagner de condition if pour expliquer au programme quoi faire dans l un ou l autre des cas a savoir si l objet existe ou pas

    Code : 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
    29
    30
    31
      if (NbChoix == 1)
                        {
                            Console.WriteLine("Entrez Prenom ");
                            Prenom = Console.ReadLine();
                            Console.WriteLine("Entrez Surnom ");
                            Surnom = Console.ReadLine();
                            Console.WriteLine("Entrez IDCommanditaire ");
                            IDcommanditaire = Console.ReadLine();
                            Console.WriteLine("Entrez Valeur du Prix ");
                            ValeurPrix = Convert.ToDouble(Console.ReadLine());
                            Commanditaire.Prenom1 = Prenom;
                            Commanditaire.Surnom1 = Surnom;
                            Commanditaire.IDCommanditaire1 = IDcommanditaire;
                            Commanditaire.ValeurPrix1 = ValeurPrix;
                            // On ajoute le commanditaire ...
                            //Code permettant de savoir si le commanditaire est unique ...
                            foreach (Commanditaire Commanditaire1 in GestionnaireSTE.GetCommanditaireList())
                            {
                                if (Commanditaire == Commanditaire1)
                                {
                                    Console.WriteLine("Commanditaire Existant !!");
                                    return;
                                }
                                else
                                {
                                    Console.WriteLine("Commanditaire Ajouter !!!");
                                    GestionnaireSTE.AjouterCommanditaire(Prenom, Surnom, IDcommanditaire, ValeurPrix);
                                }
                            }
     
                        }
    mais le probléme est que au moment d entré dans la boucle foreach le programme pour une raison inexpliquer se dirige dirrectement vers la derniére accolade est ca ferme apres .....

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,
    Citation Envoyé par Scommel Voir le message
    [..] mais le probléme est que au moment d entré dans la boucle foreach le programme pour une raison inexpliquer se dirige dirrectement vers la derniére accolade est ca ferme apres .....
    la raison la plus probable est simplement que GetCommanditaireList te renvoie une liste vide, du coup tu rentres pas dans le foreach.

    PS : pense à utiliser les balises CODE pour tes extraits de code, ce sera plus lisible.
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Comment est défini le type Commenditaire ? Est-ce via class ou via struct ?

    Si c'est via struct (qui est un type valeur), ça peut marcher. A condition que tous les attributs et propriétés soient correctement initialiser et correspondent à 100%.

    Si c'est via class (qui est un type référence), alors cela ne marche pas, car l'opérateur ==, à moins d'être surchargé, compare les références et pas le contenu des objets (ainsi, comparer 2 instances de Commenditaire initialisé avec les mêmes valeurs retournera faux). Pour comparer des instances et pas des références, il faut surcharger et utiliser la méthode Equals (hérité de la classe Object), en la définissant dans la classe Commenditaire.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  4. #4
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 896
    Points : 1 912
    Points
    1 912
    Par défaut
    J'ajouterais que ça n'a pas vraiment de sens de recourir à une égalité dans le cas présent. Soit tu as un identifiant précis et tu vérifies si un enregistrement correspond pour récupérer ses données, et éventuellement les modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public void Find(int id)
    {
      var commanditaire = GestionnaireSTE.GetCommanditaireList().FirstOrDefault(c => c.Id == id);
      if(commanditaire != null) Console.WriteLine($"Commanditaire [{commanditaire.Id}] : {commanditaire.Prenom}, {commanditaire.Surnom}");
      else Console.WriteLine($"Aucun commanditaire avec l'identifiant {id}");
    }
    Soit tu as des critères et tu recherches des enregistrements qui rentrent dans ces critères, en laissant à l'utilisateur le soin de décider à partir des informations que tu lui fournis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void Find(string text)
    {
      var lower = text.ToString();
      var list = GestionnaireSTE.GetCommanditaireList().Where(c => c.Prenom.ToLower().Contains(lower) || c.Surnom.ToLower().Contains(lower)).ToList();
      if(list.Any()){
        Console.WriteLine($"{list.Count} résultats trouvés :");
        list.ForEach(c => Console.WriteLine($"Commanditaire [{c.Id}] : {c.Prenom}, {c.Surnom}");
      }
      else Console.WriteLine($"Aucun résulat");
    }
    L'égalité fonctionne bien sur des données structurées (identifiant, code, date), sur des données non structurées (nom, prénom, titre, contenu d'article, données complexes...) on est plutôt sur une approche "trouver des choses qui ressemblent à ...".

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/12/2008, 09h57
  2. Centrer verticalement les objet dans un flow layout ?
    Par Djobird dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 05/09/2008, 09h08
  3. Classe générée pour un objet dans la bibliotheque
    Par tim974 dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 31/08/2008, 14h37
  4. Ou ranger les objets dans Python ?
    Par LLEJEUNE1 dans le forum Général Python
    Réponses: 15
    Dernier message: 24/06/2008, 11h58
  5. Réponses: 23
    Dernier message: 21/02/2007, 12h53

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