Partage
  • Partager sur Facebook
  • Partager sur Twitter

Récupérer sous condition un objet en c#

Sujet résolu
    24 septembre 2020 à 12:11:35

    Bonjour ! Je fais face à un exercice qui me parait super simple mais sur lequel je bloque depuis ce matin.

    Peut-être l'un de vous aura une solution.

    Contexte:

    J'ai une classe Book, avec 4 attributs: son Id, son titre, son auteur et sa disponibilité.

    J'ai une classe Person avec 4 attributs: son Id, son prénom, son nom et sa liste de livres empruntés.

    J'ai une classe Library avec 2 attributs: une liste des personnes inscrites à la bibliothèque, une liste des livres disponibles.

    Objectif:

    Je dois créer une méthode de la classe Library nommée GetPerson() qui permet de renvoyer une personne de la liste à partir de son Id.

    Problème:

    Je parcours donc ma liste dans une boucle foreach, et si on trouve correspondance avec l'identifiant, je retourne la personne.

    Seulement, si je ne trouve pas de personne qui corresponde à l'identifiant, je ne peux rien renvoyer. Mais je suis obligé de retourner une personne puisque c'est dans sa signature.

    Comment je suis supposée gérer ce cas ?

    public Person GetPerson(string identifiant)
            {
                foreach (Person personne in ListeDesInscrits)
                {
                    if (identifiant == personne.Id)
                    {
                        return personne;
                    }
                    else
                    {
                        return ??;
                    }
                }
    
            }

    Merci de vos réponses !

    • Partager sur Facebook
    • Partager sur Twitter
      24 septembre 2020 à 13:31:33

      Bonjour,

      Un simple "return null" suffit

      • Partager sur Facebook
      • Partager sur Twitter
        24 septembre 2020 à 13:36:56

        Ici, vous êtes dans un cas simple car Person est très vraisemblablement un "type référence".

        Il est donc possible d'affecter "null" à une variable de ce type, ou de renvoyer "null" si le type de retour de la fonction est de ce type.

        public Person GetPerson(string identifiant)
        {
            foreach (Person personne in ListeDesInscrits)
            {
                if (identifiant == personne.Id)
                {
                    return personne;
                }
            }
            return null;
        }

        Pensez aussi aux méthodes d'extension LINQ qui allège considérablement le code (et l'optimise en arrière-plan).

        var thePersonne = ListeDesInscrits.FirstOrDefault(inscrit => inscrit.Id == identifiant);

        https://docs.microsoft.com/fr-fr/dotnet/api/system.linq.enumerable.firstordefault?view=netcore-3.1

        • Partager sur Facebook
        • Partager sur Twitter
        Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
          24 septembre 2020 à 14:18:42

          Merci beaucoup de votre aide !

          Je vais essayer de m'améliorer de ce côté là

          • Partager sur Facebook
          • Partager sur Twitter

          Récupérer sous condition un objet en c#

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown