Je me demandais quelles étaient les différences entre ces déclarations de getters et setters et s'il y avait une méthode préférée (et pourquoi). La première peut être générée automatiquement par Visual Studio. Qu'en est-il des autres ? Merci
1er
string _myProperty { get; set; }
2ème
string _myProperty;
public string myProperty
{
get { return _myProperty; }
set { _myProperty = value; }
}
3ème
string _myProperty;
public string getMyProperty()
{
return this._myProperty;
}
public void setMyProperty(string value)
{
this._myProperty = value;
}
Eh bien, la première et la deuxième génèrent toutes deux quelque chose comme la troisième à la fin. Cependant, n’utilisez pas la troisième lorsque vous avez une syntaxe pour les propriétés.
Enfin, si vous n'avez pas de travail à faire dans le get
ou le set
, alors utilisez le premier.
En fin de compte, la première et la deuxième sont juste une forme de sucre syntaxique, mais pourquoi coder plus que ce qui est nécessaire.
// more code == more bugs
Et juste pour s'amuser un peu, considérez ceci :
public string A { get; private set; }
Maintenant, c’est beaucoup plus simple, n’est-ce pas ? Le modificateur public
est impliqué à la fois sur le get
et le set
, mais il peut être surchargé. Il s'agit bien sûr de la même règle pour tout modificateur utilisé lors de la définition de la propriété elle-même.
Commençons par 3. Ça ne marcherait pas. public getMyProperty()
n'a pas de retour type.
Et les numéros 1 et 2 sont en fait les mêmes choses. 2 est ce que le numéro 1 devient après compilation.
Donc 1 et 2 sont les mêmes choses. Avec 2, vous pouvez avoir une certaine validation ou une mise en cache dans votre modèle.
En dehors de cela, ils deviennent identiques.