C# (I): Properties vs. Fields

Con esta entrada quiero inaugurar una serie de artículos que describan características de C# enfocadas desde el punto de vista del programador que desde otros lenguajes se acerca a éste, poniendo énfasis por tanto en las diferencias y “nuevas” funcionalidades respecto a otros lenguajes un tanto más “antiguos” y con menor flexibilidad.

Es fácil adjudicar a una propiedad dentro de una clase de C# la consideración de campo, cuando en la definición del lenguaje se hace una clara diferenciación entre que la primera es una function member, mientras que la segunda es un data member.

La propiedad esta definida dentro de la clase por un método o dos, y que se utiliza externamente como un campo de la clase. Por ejemplo para definir una propiedad:

public string UnaPropiedad

{

get

{

return “Valor de retorno”;

}

set

{

// Código para establecer el valor de la propiedad

}

}

Get no lleva parámetros y debe devolver el mismo tipo que como se ha definido la propiedad. Set tampoco lleva, aunque el compilador asume que lleva uno de nombre value, y que llevará el valor que se le establezca. El valor de la propiedad se asigna como si fuese un campo de la clase:

nombreClase.UnaPropiedad = Valor;

Se pueden establecer propiedades de solo lectura o solo escritura omitiendo el Set o el Get respectivamente.

Asimismo, se pueden especificar modificadores de acceso para Set y Get, de manera que se puede tener un public Get y un private o protected Set. Hay que tener en cuenta, sin embargo, que al menos uno de ellos ha de tener el nivel de acceso de la propiedad, sino se obtendría un error de compilación.

Finalmente, mencionar que existe una auto implementación de propiedades, que además crearía automáticamente un campo equivalente (private) en la clase. La sintaxis sería la siguiente:

public string UnaPropiedad {get; set;}

El compilador creará automáticamente la declaración private string unaPropiedad; sin necesidad de especificarlo.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: