Partage
  • Partager sur Facebook
  • Partager sur Twitter

Implémentation membre interface

    15 juillet 2022 à 9:33:14

    Bonjour à tous,

    Je suis en train de voir les interfaces en C# et il y a un point que je ne comprends pas très bien :

    interface IExemple
    {
        ExempleClass IMethode();
    }
    class Exemple : IExemple
    {
        public ExempleClass IMethode()
        {
            return new ExempleClass();
        }
    }

    Ce code passe très bien, aucun soucis.

    Mais si j'enlève le modificateur d'accès de IMethode() une erreur survient (CS0737) et quand je suis le lien de l'erreur j'obtient l'info suivante :

    A method that implements an interface member must have public accessibility. All interface members are public.

    Mais alors pour quelle raison le code suivant compile aussi sans soucis ? :

    interface IExemple
    {
        ExempleClass IMethode();
    }
    class Exemple : IExemple
    {
        ExempleClass IExemple.IMethode()
        {
            return new ExempleClass();
        }
    }




    • Partager sur Facebook
    • Partager sur Twitter
      18 juillet 2022 à 17:02:57

      Bonjour,

      Vous ne pouvez pas modifier l'accessibilité d'une méthode hérité d'une interface ou d'une classe !

      Donc si vous mettez "public" dans la classe qui hérite, vous devez aussi mettre "public" dans l'interface

      EDIT : en regardant la doc, ça devrait fonctionner. Donc au final, je ne sais pas. Mais on m'a toujours appris a bien mettre les accesseurs des le début.

      -
      Edité par Matioso 18 juillet 2022 à 17:09:22

      • Partager sur Facebook
      • Partager sur Twitter

      Implémentation membre interface

      × 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