Pourquoi est-ce:Objet de propriétés automatiques dans .NET
public string Foo {get;set;}
considéré comme mieux que cela:
public string Foo;
Je ne peux pas pour la vie de moi travailler dehors. Quelqu'un peut-il nous éclairer?
Merci
Pourquoi est-ce:Objet de propriétés automatiques dans .NET
public string Foo {get;set;}
considéré comme mieux que cela:
public string Foo;
Je ne peux pas pour la vie de moi travailler dehors. Quelqu'un peut-il nous éclairer?
Merci
Parce que vous pouvez en toute transparence (du point de vue du code client) changer la mise en œuvre du compositeur/getter wheras vous ne pouvez pas faire la même chose, si vous exposez la propriété sous-jacente directement (comme il ne serait pas binaire compatible. Il ya une certaine odeur de code associée aux propriétés automatiques, cependant, en ce sens qu'elles rendent très facile d'exposer une partie de l'état de votre classe sans y réfléchir. Cela a également frappé Java, où dans de nombreux projets, vous trouvez get/setXxx
paires partout dans l'endroit exposant l'état interne (souvent sans nécessité, "juste au cas"), ce qui rend les propriétés essentiellement publiques.
Ceci est la réponse - si vous voulez Pour changer la façon dont Foo est calculé ou stocké, vous pouvez le faire de manière transparente. –
Je ne comprends pas pourquoi vous ne pouvez pas changer de façon transparente d'un accès direct à une propriété. Le code client utiliserait toujours myObject.Foo = bar ou Console.Write (myObject.Foo). Aucun changement au code client ... – David
@David: Vous voulez parier? a) il n'est certainement pas compatible avec les binaires, donc vous devriez au moins * * * * * * * b) Ce n'est pas compatible avec la source dans certaines situations - par exemple, vous pouvez utiliser un champ comme argument pour un paramètre out, mais vous ne pouvez pas utiliser une propriété. Ensuite, il y a quelque chose qui utilise la réflexion (comme la liaison de données). Dites non aux champs publics ... –
Bien que le but d'un champ est l'état d'objet de stockage, l'objet d'une propriété est simplement accès. La différence peut être plus conceptuelle que pratique, mais les propriétés automatiques fournissent une syntaxe pratique pour déclarer les deux.
Comme toujours quand ce sujet apparaît, lisez Jon Skeet's> ** [Pourquoi les propriétés comptent] (http://csharpindepth.com/Articles/Chapter8/PropertiesMatter.aspx) ** –