Propiedades automáticas en C# 3.0: Reinventando la rueda… poligonal
Publicado
24/3/2007 13:36
por
Rafael Ontivero
La nueva versión de C# trae una característica que se conoce como propiedades automáticas, que no es otra cosa que el hecho de poder definir propiedades elementales (es decir, aquellas propiedades sin efectos laterales que solamente son una representación de una variable miembro interna) de forma mucho más sencilla y teniendo que teclear menos código.
La característica la he visto en el blog de Wriju, en concreto esta entrada recientemente colocada. También creo que esto haya sido comentado por aquí, pero no puedo evitar la tentación de decir algo al respecto.
Usando los mismos ejemplos que aparecen en el citado blog, y resumiendo un poco, lo que en C# 2.0 se expresa como:
public class Customer
{
public Customer() { }
private int _CustID;
public int CustID
{
get { return _CustID; }
set { _CustID = value; }
}
}
En C# 3.0 podría escribirse así:
public int CustID
{
get;
set;
}
Casi nada, la gente de Microsoft ha inventado una rueda poligonal, ya que dicha característica a mi modo de ver viola los conceptos de un lenguaje sintético (igual que lo violaba el C# original) y no hace más que enredar lo que otros chicos, también de Microsoft, han resuelto más que satisfactoriamente con la introducción de una palabra reservada en el lenguaje, y es que en C++/CLI existe lo que se llaman propiedades triviales. Definir una propiedad al estilo C++/CLI es tan sencillo como teclear:
property int CustID;
Personalmente pienso que el hecho de no introducir la palabra reservada property dentro del lenguaje C# es un defecto de diseño bastante serio, máxime cuando el lenguaje fue creado en su momento desde cero. De todos modos ignoro si existe alguna limitación o razón para no utilizar dicha palabra en el lenguaje, pero creo que no.