Partage
  • Partager sur Facebook
  • Partager sur Twitter

getter/setter

private/public

    9 août 2018 à 10:43:21

    Bonjour

    une ligne de code comme celle là :

    public string name { get ; set; }

    permet donc d'avoir accès en écriture et lecture à cette attribut mais quel est l’intérêt d'utiliser des getter/setters dans ce cas là. Puisque le statut public suffit.

    Je pensais qu'il s'agissait d'une formulation raccourcie pour l'utilisation de getter/setter pour un attribut private mais ce n'est visiblement pas le cas.

    Existe t-il une façon de faire pour utiliser une formulation courte de getter/setter sur des attributs private?

    Merci

    -
    Edité par DimitriNeker1 9 août 2018 à 10:43:50

    • Partager sur Facebook
    • Partager sur Twitter
      9 août 2018 à 11:13:02

      Pour la 2ème question je renvoie à la documentation https://docs.microsoft.com/fr-fr/dotnet/csharp/programming-guide/classes-and-structs/auto-implemented-properties

      Pour la 1ère, déjà je tiens à préciser qu'au sens OO dans 99% des cas un setter est une mauvaise chose (un getter l'est souvent également mais pas autant), simplement parce que le rôle d'une classe (au sens OO) c'est pas d'exposer des attributs/proprietes/valeurs/autres mais de rendre des services ; pour ça elle a probablement besoin d'info (privées) mais ça c'est SA tambouille interne.

      Cela étant dit C# (et d'autres) ont besoin de ça dans diverses choses, la serialisation, les bindings etc. Bref des choses où il faut un accès en écriture

      Ce qu'il vaut mieux retenir c'est qu'une propriété masque l'implémentation un minimum, et permet d'eviter les «breaking change» (c'est aussi valable dans le cas propriété avec getter uniquement vs champ public readonly d'ailleurs)

      Aujourd'hui, j'ai une propriété auto-implémentée (donc sans corps) mais si demain j'ai à changer un truc (rajouter une validation, lancer un événement, etc.) je lui donne un corps et c'est transparent pour celui qui utilise la classe.

      • Partager sur Facebook
      • Partager sur Twitter
      Censément, quelqu'un de sensé est censé s'exprimer sensément.

      getter/setter

      × 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