Avatar ·

¿Cuál es la diferencia entre field y property en C#?

¡Hola, colegas! Soy un desarrollador C# principiante y no puedo entender la diferencia entre field y property. Parece que ambos almacenan datos, pero ¿entonces para qué se inventaron las properties? Aquí tengo una clase `Person`. Puedo escribir así: ```csharp public class Person { public string Name; } ``` Y esto es un field. Pero veo que muchos escriben así: ```csharp public class Person { private string name; public string Name { get { return name; } set { name = value; } } } ``` Y esto es una property. Ambas opciones parecen funcionar igual: puedo asignar un valor y leerlo. Por ejemplo: ```csharp Person p = new Person(); p.Name = "Alexey"; Console.WriteLine(p.Name); ``` El resultado será el mismo. Entonces, ¿para qué complicarse con `get` y `set`? ¿Por qué no usar siempre fields públicos? He oído que está relacionado con la encapsulación, pero no entiendo cómo una property la mejora si igual puedo escribir cualquier valor. Explíquenme,