La principale différence est que si vous avez besoin plus tard pour ajouter une logique dans votre getter ou setter, et d'autres DLL ont déjà été compilés contre le vôtre, vous pouvez facilement changer
public string Name { get; set; }
dans
public string Name { get{/*special code*/} set{/*special code*/} }
et il ne sera pas un changement de rupture pour publier votre nouvelle DLL et d'autres DLL ne seront pas recompilées.
Alors que si vous avez changé
public string Name;
dans
public string Name { get{/*special code*/} set{/*special code*/} }
alors vous devez vous assurer que toutes les DLL qui utilisent le vôtre sont recompilés, car ils changent d'avoir accès à un champ en accéder à une propriété.
Ceci est évidemment un plus gros problème quand vous DLLs expédition à d'autres programmeurs (comme un projet open source ou en tant que fournisseur de composants par exemple) que si vous construisez juste une application pour votre propre/employeur
Vous pourriez vouloir lire ceci: http://stackoverflow.com/questions/1019571/why-do-we-use-net-properties-instead-of-plain-old-get-set-set-functions –
http: //stackoverflow.com/questions/1272521/propertywith-no-extra-processing-vs-public-field – Groo
c'est la fonction AC# 3.0 (.NET 3.5) pour être exact –