web-dev-qa-db-fra.com

Champ public en lecture seule vs. propriété get-only

Existe-t-il des cas où vous souhaiteriez un champ public en lecture seule vs. une propriété à implémentation automatique get-only?

public class Foo
{
    public readonly string Hello;

    public string Hello2 { get; }
}

Les deux ne peuvent être définis que pendant le constructeur et les deux offrent un accès en lecture seule en dehors de la classe .. Je suis un peu fatigué, donc je risque de manquer quelque chose.

26
Alex KeySmith

Une raison serait la liaison de données - .net implémente la liaison aux propriétés mais pas aux champs publics.

Quelques discussions ici: Pourquoi ne pouvons-nous pas utiliser des champs publics pour la liaison de données en C #?

11
PaulF

En faire une propriété plutôt qu'un champ signifie qu'il peut être utilisé sur des interfaces.

L'implémentation exacte (bien que les propriétés automatiques n'aient pas vraiment beaucoup d'implémentation ...) est également abstraite, vous pourrez donc à l'avenir la baser sur une combinaison de champs sans rompre (compiler) la compatibilité.

24