Quelle est la meilleure facon de donner une valeur initiale a une propriete automatique en C# ?
En C# 5 et versions anterieures, pour donner une valeur initiale aux proprietes implementees automatiquement, vous devez le faire dans un constructeur.
Depuis C# 6.0, vous pouvez specifier la valeur initiale en ligne. La syntaxe est :
public int X { get; set; } = x; // C# 6 ou superieur
DefaultValueAttribute est destine a etre utilise par le concepteur VS (ou tout autre consommateur) pour specifier une valeur par defaut, et non une valeur initiale. (Meme si dans un objet concu, la valeur initiale est la valeur par defaut).
Au moment de la compilation, DefaultValueAttribute n’affectera pas l’IL genere et ne sera pas lu pour initialiser la propriete a cette valeur (voir L’attribut DefaultValue ne fonctionne pas avec ma propriete automatique).
Des exemples d’attributs qui affectent l’IL sont ThreadStaticAttribute, CallerMemberNameAttribute, …