Il y a tellement de façons d'écrire des getters et des setteurs qu'il me confond.
Sont-ce que deux font la même chose? et si oui, cela me permet de voir cette proportive d'une autre classe tout en me permettant de le modifier? P> Merci vous :). p> p>
3 Réponses :
Les getters dans la méthode 1 et 2 sont équivalents. Méthode 1 expose également un seigter qui ne fait rien, ce qui n'est pas tout à fait identique à la méthode 2. Cela conduirait à la confusion, car de la classe de déclaration, il vous permet d'écrire des choses comme Cette ligne ressemble à cela devrait faire quelque chose, le corps du setter est vide, donc ça ne fait rien. Je pense que ce que vous voulez ne serait pas de ne pas spécifier le setter du tout: p> si vous faire em> veux que le setter soit utilisable Privalement, alors vous auriez besoin de définir le corps: p>
De toute façon, quelqu'un sera en mesure de modifier la liste, comme quand quiconque obtient Si vous souhaitez obtenir une copie peu profonde de Mais même alors, c'est simplement une copie peu profonde, donc si les éléments de Comment faire exactement sur cette copie profonde dépendrait de la nature exacte de myListreference = instance.mypublicatliste; code>, ils obtiennent une référence à
myprivatelist p >
myprivatelist code>, vous voudriez faire
get => nouvelle liste
mylistreference code> sans affecter
myprivatelist code>. P>
myListreference code> sont édités, les mêmes éléments seront modifiés dans
MyProvateTelist Code>. Pour éviter cela, vous auriez besoin de faire une copie profonde. P>
myClass code> mais vous pouvez apprendre plus d'informations de Cette question , en utilisant une classe qui définit un Copie constructeur . P>
Si vous ne devriez pas être en mesure de modifier les entrées des listes, voir aussi readonlycollection
et Liste
.. Vous pourriez préférer faire quelque chose comme Public Readonlycollection
// Option 1 public MyType Member { get; set; } // Option 2 private MyType _member; public MyType Member { get { return _member; } set { _member = value; } } // Option 3 public MyType Member { get => _member; set => _member = value; } // Option 4 public MyType Member => _member; //Only a getter, yet even shorter.
À partir d'un minuscule de test, il semble que la méthode 2 définit une propriété en lecture seule, il n'aura pas de jeu privé comme dans la méthode 1