Avatar ·

Qual é a diferença entre campo (field) e propriedade (property) em C#?

Olá, colegas! Sou um desenvolvedor C# iniciante e não consigo entender a diferença entre campo e propriedade. Parece que ambos armazenam dados, mas por que então inventaram as propriedades? Aqui está minha classe `Person`. Posso escrever assim: ```csharp public class Person { public string Name; } ``` E isso é um campo. Mas vejo que muitos escrevem assim: ```csharp public class Person { private string name; public string Name { get { return name; } set { name = value; } } } ``` E isso é uma propriedade. Ambas as opções parecem funcionar da mesma forma: posso atribuir um valor e lê-lo. Por exemplo: ```csharp Person p = new Person(); p.Name = "Alexey"; Console.WriteLine(p.Name); ``` O resultado será o mesmo. Então por que complicar com `get` e `set`? Por que não usar sempre campos públicos? Ouvi dizer que isso está relacionado ao encapsulamento, mas não entendo como a propriedade melhora isso se ainda posso atribuir qualquer valor. Expliquem, por favor.