Lorsque vous accédez à la propriété à partir du code - que ce soit à l'intérieur ou à l'extérieur de la classe - il est toujours accessible en tant que propriété. Dans la plupart des cas, ce n'est pas important - mais signifie que vous ne pouvez pas le transmettre par référence, ce que vous seriez en mesure de faire s'il s'agissait d'un champ.
Le seul code qui accède directement au champ de support (réflexion latérale) est la propriété elle-même.
C'est une propriété, pure et simple. Il n'est pas disponible en tant que champ - il est disponible en tant que propriété. Le compilateur C# ne remplace pas par des accès aux champs. Les accès à celui-ci sont toujours des accès de propriété. Bien sûr, le compilateur JIT peut bien sûr être intégré, mais ce n'est rien de spécial. En ce qui concerne le CLR, il s'agit simplement d'une propriété normale (qui se voit appliquer l'attribut [CompilerGenerated]
).
Mais pour répondre à votre question initiale - oui, la propriété automatique signifie que vous n'avez pas besoin de déclarer le champ de support vous-même. En effet, ceci:
public int Foo { get; set; }
est traduit en
private int <>Foo; // Or some other unspeakable name
public int Foo
{
get { return <>Foo; }
set { <>Foo = value; }
}
Vous ne pouvez pas accéder au champ généré directement dans le code C#, car il a un nom indicible. Vous verrez qu'il est présent si vous examinez le type avec réflexion cependant - le CLR ne fait pas la distinction entre une propriété implémentée automatiquement et une propriété "normale".
S'il vous plaît, gardez votre réponse.Ne la supprimez pas. – user196546
generixs: Dans le futur, je vous demanderais de ne pas simplement sélectionner la première bonne réponse que vous voyez. C'est frustrant pour beaucoup d'entre nous quand les débutants font cela parce qu'il tend à encourager des réponses rapides et à décourager de meilleures réponses qui prennent plus de temps à taper, ce qui va à l'encontre du but principal de StackOverflow. –
@ RayBurns. Désolé, je vais l'éviter à l'avenir.Une fois de plus désolé. – user196546