A menudo nos dicen que debemos proteger la encapsulación haciendo métodos getter y setter (propiedades en C#) para campos de clase, en lugar de exponer los campos al mundo exterior.Campos públicos frente a propiedades automáticas
Pero hay muchas ocasiones en que un campo está ahí para contener un valor y no requiere ningún cálculo para obtener o establecer. Para estos todos haríamos este número:
public class Book
{
private string _title;
public string Title
{
get{ return _title; }
set{ _title = value; }
}
}
Bueno, tengo una confesión, que no podía soportar escribir todo lo que (en realidad, fue no tener que escribirla, que fue tener que mirarlo), así que fui pícaro y utilicé campos públicos.
Luego viene lo largo de C# 3.0 y veo que añaden propiedades automáticas:
public class Book
{
public string Title {get; set;}
}
que es más ordenado, y estoy agradecido por ello, pero en realidad, lo que es tan diferente que sólo hacer un campo público?
public class Book
{
public string Title;
}
posible duplicado de [Diferencia entre propiedad y campo en C# .NET 3.5+] (http://stackoverflow.com/questions/653536/difference-between-property-and-field-in-c-sharp-net- 3-5) – nawfal
He convertido un feild en una propiedad solo para poder establecer un punto de interrupción en el setter –
Tiendo a hacer cualquier propiedad que no sea privada porque me he dado cuenta por el camino que debo refactorizar un campo en una propiedad conducir a un dolor de cabeza innecesario. [Propiedades, campos y métodos. ¡Oh, mi!] (Http://www.codeducky.org/properties-fields-and-methods-oh-my/) menciona una incompatibilidad que me ha picado en el pasado. –