Novedades lenguaje C# 3.0 (I): Propiedades automáticas

Tengo intención de repasar estos días brevemente algunas novedades que trae la versión 3.0 del lenguaje C#, que viene con .NET 3.5 y con Visual studio 2008. Hay un poco de todo: cosas sencillas y complejas pero todas interesantes. Las intercalaré con algunos otros posts normales que se me vayan ocurriendo.


Hoy, como primer post sobre el tema, voy a describir algo muy sencillo pero de gran utilidad: las implementación automática de propiedades.


Generalmente cuando definimos una propiedad de C# debemos declarar una variable privada para contener los valores, así como sus métodos set y get para asignarla y recuperarla. Si no necesitamos añadir lógica y la propiedad sólo es un envoltorio deuncampo privado (algo super-común) avabamos repitiendo todo el tiempo multitud de código como este:



private string _nombre;

public string Nombre
{
get
{
return _nombre;
}
set
{
_nombre = value;
}
}



Un verdadero «peñazo» para hacer todo el tiempo lo mismo. Vale que en el ditor de Visual Studio tenemos la macro «prop» que nos ayuda a escribirlo pero ¿para qué hacerlo si es evidente cómo va todo el tiempo?


Eso debieron de pensar los diseñadores del lenguaje por que le han añadido una capacidad nueva para declarar propiedades como la anterior de manera rápida. Así para definir una propiedad idéntica a la anterior sin esfuerzo basta con escribir lo siguiente:


public string Nombre { get; set;}

¡Listo!. El compilador generará todo lo demás por nosotros escogiendo un nombre aleatorio para la variable privada (bastante feo por cierto) y dejando más claro y mucho más conciso nuestro código.

Sin categoría

3 thoughts on “Novedades lenguaje C# 3.0 (I): Propiedades automáticas

  1. A mí esta es una de las características nuevas del lenguaje que más me gustan. 🙂

    Respecto a que escoja un nombre aleatorio, supongo que será porque si por ejemplo genera una variable privada de igual nombre que el de la propiedad, con la primera letra en minúscula y con el símbolo _ delante de la palabra (por poner un ejemplo), es decir, en este ejemplo tuyo _nombre (tal y como lo pones en la declaración tradicional de una propiedad), si declaramos luego (a mala leche) otra variable de como _nombre ¿que ocurriría?.
    Si lo hacen con un nombre aleatorio, se ahorran esa problemática que supongo que cuesta gestionar y más decir al programador que _nombre ya está declarado cuando no es así. Si el compilador lo genera aleatoriamente, de esta manera tiraría para adelante y no daría quebraderos de cabeza.

    Es una posibilidad…

  2. Gracias por la aclaración, FineDust 😉

    De hecho yo eso de «super-loquesea» sólo lo uso en lenguaje coloquial y distendido como por ejemplo cuando hablo con un amigo o escribo algo en mi blog, en el que me gusta sentirme cómodo y hablar como me apetezca, sin fijarme demasiado en estas cosas formales.

    La formalidad la dejo para mis libros y artículos en los que te aseguro que no sería necesario un comentario como ese. Si has leído alguno estarás de acuerdo conmigo.

    Saludos.

    JM.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *