
Vale, se que esto viene un poco tarde puesto que lleva mucho tiempo en el mercado ya, y no digamos como beta, de hecho Monet, la librería de plugins que creé hace un tiempo, ya utiliza algunas de dichas características.
Visto por encima podemos decir que C# 3.0 proporciona los siguientes "avances" o "facilidades" nuevas:
En este primer post solo voy a cubrir las dos primeras partes, en un segundo hablaré de las extensiones y ya en el tercero os hablaré de las maravillas de las lambda expressions y el LinQ.
Desde pequeñitos nos han dicho siempre que las propiedades son buenas, permiten cambiar el código sin afectar a aquellos que lo usan y encapsulan la funcionalidad. Es por ello que las clases prácticamente nunca (y cuando lo hacen debe ser por muy buenas razones) pubican variables normales, todo son propiedades.
Ahora bien, dicho lo anterior, ¿cuántas veces tenemos código como el siguiente?
public string Variable1 { get { return mVariable1; } set { mVariable1 = value;} }
public string Variable2 { get { return mVariable2; } set { mVariable2 = value;} }
}
Así visto parece una chorrada, pues bien, realmente lo es. En C# 3.0 son conscientes de ello por lo que podemos hacer:
y tan ricamente. Si más adelante queremos implementar getter o setter personalizados nos bastará con editar el código y el cliente seguirá sin enterarse. Internamente lo que está pasando es que el compilador se encarga de generar dos variables internas privadas y asociar un getter y un setter por defecto para ellas. Obviamente esto solo sirve para aquellas propiedades que definan ambos (getter y setter) ¡de lo contrario no podríamos nunca asociar un valor a esa variable!
Si lo anterior era un paso obvio, este no lo es tanto pero resulta extremadamente cómodo. Con esta "feature" podemos inicializar objetos o colecciones en una declaración simple, ahorrandonos el paso de tener que declarar un constructor enorme o de inicializar a mano. Por ejemplo, comparemos código:
Antes:
Ahora:
y lo mismo pasa con las colecciones de objetos
Antes:
Ahora:
y si, puede parecer que no es mucho (tampoco es que sea un gran cambio) pero a mi me resulta extremadamente cómodo de usar...
Hemos visto dos nuevas funcionalidades de C# 3.0 que, pese a no ser espectaculares, si que nos hacen la vida un poquito más fácil. En las próximas entregas veremos el resto de mejoras que, creedme, merecen, y mucho, la pena.