Propriétés implémentées automatiquement c #

  1. quelqu’un pourrait-il m’expliquer quelle est l’idée derrière l’utilisation de propriétés implémentées automatiquement c #?

    public class Customer { public int ID { get; set; } public ssortingng Name { get; set; } } 

    Je suis motivé à utiliser des propriétés pour un champ privé, afin que nous puissions déterminer comment accéder à un champ privé. Mais ici, c’est comme définir le domaine comme étant public dès le départ. non?

  2. Existe-t-il une différence entre définir un champ comme “const public” ou le définir comme ayant une propriété get-only?

Une propriété automatique publique n’est pas la même chose qu’un champ public, elles ne sont pas compatibles binarys. Si vous implémentez un champ public et que vous souhaitez append plus tard une logique, vous devrez le transformer en propriété et introduire ainsi un changement radical (en raison de l’incompatibilité binary). C’est la raison pour laquelle de nombreuses conventions stipulent que vous ne devez jamais exposer les champs publics, mais plutôt utiliser des propriétés.

Ainsi, les propriétés automatiques ne sont qu’un sharepoint départ pratique pour tout membre de valeur de classe non privé simple, permettant d’append une logique ultérieurement tout en maintenant la compatibilité binary.

Les propriétés peuvent être liées aux données, alors que les champs ne peuvent pas.

Les propriétés implémentées automatiquement sont essentiellement du sucre syntaxique. Une fois compilé, le magasin de support existe. Ce n’est tout simplement pas disponible à partir du code source.

Comme d’autres l’ont dit, les propriétés et les champs ne sont pas équivalents. Les champs et les propriétés n’étant pas compatibles, changer entre eux est un changement radical. De plus, vous ne pouvez pas utiliser la liaison de données avec des champs.

Dernier point. Bien que, dans votre cas, il existe peu de différence fonctionnelle entre l’exemple et un champ public, vous pouvez modifier la visibilité de l’un des accesseurs. Ainsi, pour créer une propriété en lecture seule à l’aide d’une propriété automatique, vous pouvez faire quelque chose comme:

 public int ID { get; private set; } 

Dans ce cas, l’accesseur get est public, conformément à la signature complète, mais l’accesseur défini est privé.

Je vais laisser MSDN parler ici ….

“Dans C # 3.0 et les versions ultérieures, les propriétés implémentées automatiquement rendent la déclaration de propriété plus concise lorsqu’aucune logique supplémentaire n’est requirejse dans les accesseurs de la propriété. Elles permettent également au code client de créer des objects. Lorsque vous déclarez une propriété comme indiqué dans l’exemple suivant (voir Article MSDN par exemple), le compilateur crée un champ de sauvegarde privé et anonyme accessible uniquement via les accesseurs get et set de la propriété “

La différence la plus avantageuse est probablement que vous pouvez effectuer une pré / post-validation, déclencher des événements PropertyChanged , etc.

Existe-t-il une différence entre définir un champ comme “const public” ou le définir comme ayant une propriété get-only?

Oui, un champ get-only doit avoir une déclaration de champ privé. Ce champ peut être modifié par la classe en interne, en désignant const un champ comme signifiant qu’il ne peut pas être modifié.

2: un const public doit être défini à comstacktime, vous ne pouvez pas utiliser d’objects de référence pour cela. Seules les classes qui héritent de System.ValueType (ssortingng, int, double, …)

Un const est aussi statique alors qu’une propriété avec seulement un getter ne l’est pas (chaque classe a sa propre instance.)

Concernant 1: L’utilisation de propriétés implémentées automatiquement est recommandée car vous pouvez implémenter une logique supplémentaire ultérieurement sans interrompre les modifications. Vous en trouverez un exemple à l’ adresse suivante: En savoir plus sur les propriétés implémentées automatiquement