Las propiedades proporcionan acceso controlado a; en el más básico, puede simplemente significar que encapsula un campo (no se recomiendan los campos públicos), que el compilador puede hacer que sea fácil para usted:
public int Foo {get;set;} // the compiler handles the field for you
Se podría, sin embargo, utilizar la propiedad de hacer cumplir la lógica o el mango lateral efectos:
private int foo;
public int Foo {
get { return foo; }
set {
if(value < 0) throw new ArgumentOutOfRangeException();
if(value != foo) {
foo = value;
OnFooChanged(); // fire event notification for UI bindings
}
}
}
Otras opciones comunes son perezosos de carga, los miembros calculados, los miembros pasan por el proxy, etc.
también puede cambiar la accesibilidad, por ejemplo:
public int Foo { get; protected set; }
que sólo puede ser asignado por el tipo y subclases, no por código no relacionado. También podría tener un obtener o establecer.
Básicamente, las propiedades actúan como una versión más formal de un par get/de métodos establecido, lo que es mucho más fácil hablar de "Foo", en lugar de "get_Foo"/"set_Foo", etc (en los dos sentidos Unión).
diferencia de los campos, propiedades también pueden ser objeto de publicidad en las interfaces, que es esencial para se utilizan código basado en la interfaz
Extranjero * en comparación con qué *? ¿Qué estás usando actualmente? campos públicos? –
Sí, campos normales – Varmitharen
sí, no hagas eso; p Los campos públicos casi nunca son una buena idea. –