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,