Avatar ·

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

Bonjour, collègues ! Je suis un développeur C# débutant et je n'arrive pas à comprendre la différence entre un champ et une propriété. Apparemment, les deux stockent des données, mais pourquoi alors a-t-on inventé les propriétés ? Voici, j'ai une classe `Person`. Je peux écrire comme ça : ```csharp public class Person { public string Name; } ``` Et c'est un champ. Mais je vois que beaucoup écrivent comme ça : ```csharp public class Person { private string name; public string Name { get { return name; } set { name = value; } } } ``` Et c'est une propriété. Les deux options semblent fonctionner de la même manière : je peux assigner une valeur et la lire. Par exemple : ```csharp Person p = new Person(); p.Name = "Alexei"; Console.WriteLine(p.Name); ``` Le résultat sera identique. Alors pourquoi se compliquer la vie avec `get` et `set` ? Pourquoi ne pas toujours utiliser simplement des champs publics ? J'ai entendu dire que cela est lié à l'encapsulation, mais je ne comprends pas comment une propriété l'améliore si je peux toujours écrire n'importe quelle valeur. Expliquez-moi,