1545 votes

Quelle est la différence entre un champ et une propriété en C# ?

En C#, qu'est-ce qui différencie un champ d'une propriété, et quand faut-il utiliser un champ au lieu d'une propriété ?

5voto

dotnetdev Points 13492

En outre, les propriétés vous permettent d'utiliser la logique lors de la définition des valeurs.

Ainsi, vous pouvez dire que vous ne voulez définir une valeur dans un champ entier que si la valeur est supérieure à x, sinon vous déclenchez une exception.

Fonction très utile.

5voto

Moe Sisko Points 3370

(Ceci devrait vraiment être un commentaire, mais je ne peux pas poster de commentaire, alors veuillez m'excuser si ce n'est pas approprié comme post).

J'ai travaillé une fois dans un endroit où la pratique recommandée était d'utiliser des champs publics au lieu de propriétés lorsque la défense de propriété équivalente aurait simplement consisté à accéder à un champ, comme dans :

get { return _afield; }
set { _afield = value; }

Leur raisonnement était que le terrain public pourrait être transformé en propriété plus tard, si nécessaire. Cela me semblait un peu étrange à l'époque. À en juger par ces messages, il semble que peu de personnes ici soient d'accord. Qu'auriez-vous pu dire pour essayer de changer les choses ?

Edit : Je devrais ajouter que toute la base de code à cet endroit a été compilée en même temps, donc ils ont pu penser que changer l'interface publique des classes (en changeant un champ public en propriété) n'était pas un problème.

5voto

Brahim Boulkriat Points 351

Techniquement, je ne pense pas qu'il y ait de différence, car les propriétés ne sont que des enveloppes autour des champs créés par l'utilisateur ou automatiquement par le compilateur. Le but des propriétés est de renforcer l'encapsulation et d'offrir une fonctionnalité légère semblable à une méthode. Le but des propriétés est de renforcer l'encapsulation et d'offrir une fonctionnalité légère semblable à une méthode. C'est juste une mauvaise pratique de déclarer les champs comme publics, mais cela ne pose aucun problème.

4voto

Si vous utilisez des primitives de fil, vous êtes obligé d'utiliser des champs. Les propriétés peuvent casser votre code threadé. En dehors de cela, ce que Cory a dit est correct.

3voto

Les propriétés encapsulent les champs, ce qui vous permet d'effectuer un traitement supplémentaire sur la valeur à définir ou à récupérer. Il est généralement inutile d'utiliser des propriétés si vous n'effectuez aucun traitement préalable ou postérieur sur la valeur du champ.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X