La propiedad pública accede a los campos y al código de clase interno a través de los métodos expuestos getter y setter. Un campo público accede directamente al campo.
El uso de propertys ofrece el potencial de proporcionar una capa de abstracción y diseño (capacidad para proteger el acceso del conjunto, de forma privada).
Cuando se especifica una propiedad y no hay un cuerpo presente, el compilador que se utiliza para almacenar el valor crea un campo privado subyacente. Básicamente:
private int item = 0;
public int Item {
get { return item; }
set {item = value; }
}
En general, tiendo a usar propiedades para variables públicas expuestas y campos para privados. Podría considerar usar un campo si se accede a ese campo muchas veces y la velocidad es un requisito de diseño crucial.
Se ha respondido antes aquí: [Why Properties Matter] (http://csharpindepth.com/Articles/Chapter8/PropertiesMatter.aspx) – R0MANARMY