Méthode 1
private int someVar;
public int SomeVar
{
get { return someVar; }
set { someVar= value; }
}
Cette méthode n'est généralement pas préférée car certains langages (tels que VB.NET) sont insensible à la casse. Par conséquent someVar
, SomeVar
, SOMEVAR
et somevar
ainsi que toutes les combinaisons possibles de majuscules et de minuscules, vous pouvez penser à la même chose pour le compilateur et cela est susceptible de générer des erreurs.
Méthode 2
public int SomeVar{get; set;}
Cette méthode, appelée la mise en œuvre automatique de propriété, crée une variable privée dans l'ombre pour le stockage et la récupération des données transmises à la propriété.
Dans VB.NET, le nom de la variable créée pour chaque propriété implémentée automatiquement est identique à la propriété précédée d'un trait de soulignement (_). Ainsi, une propriété avec le nom SomeProperty
aura une variable privée correspondante appelée _SomeProperty
.
Cela peut être démontré dans votre code VB.NET en créant une propriété implémentée automatiquement, puis en créant une variable avec le même nom que la propriété implémentée automatiquement précédée d'un trait de soulignement.
En C#, cependant, si vous avez une propriété implémentée automatiquement, une variable décorée avec l'attribut CompilerGenerated
est utilisée pour la propriété. Ainsi, vous pouvez avoir la propriété auto-implémentée et une variable avec le même nom que la propriété, mais dans un boîtier différent (comme dans la méthode 1).
Conclusion
Il est généralement préférable d'utiliser les propriétés implémentées automatiquement chaque fois que possible. Lorsque le besoin se fait que vous effectuez une validation avant d'affecter la propriété à sa variable correspondante, il est recommandé d'utiliser name comme la variable à laquelle la valeur de la propriété est stockée avec un préfixe de soulignement comme ci-dessous.
private int _SomeVar;
public int SomeVar
{
get { return _SomeVar;}
set { _SomeVar = value > 0 ? value : 0; }
}
Le compilateur convertit à peu près le second en premier. Jetez un oeil à Reflector :) – Bryan
C'est ce que je pense aussi, ce que je voudrais savoir, c'est la syntaxe à privilégier pour la lisibilité et la réutilisabilité, etc. –
Il est à noter que les propriétés automatiques ont été introduites dans C# 3.0. versions (et non refacturées) utilisera toujours la version la plus spécifiée. –