Hola que tal compañeros. Antes que otra cosa suceda, quiero agradecer el espacio a NotasWeb.com, creo que recursos como este son extremadamente buenos y provechosos.
Pues como primer artículo, quiero comentarles acerca de un error que hace poco me encontré, y que más que la comlejudad del error o como resolverlo, es interesante por que se da.
ESCENARIO:
1. Cree un programita de consola en C# muy sencillo que va como sigue:
class Program
{
int x = 0;
int y = x;
public static void Main()
{
}
}
2. Sendo así de sencillo el programa y sin mayor complicaciones, resulta que esto arroja un error de compilación:
"Error de Compilación CS0236: "Un inicializador de campo no puede hacer refrencia al campo no estático, método o propiedad."
RAZÖN:
La documentación de Microsoft al respecto, simplemte comenta que no se puede inicializar un campo de instancia haciendo referencia a otro campo de instancia. La razón de esto es porque el compilador lee la proción de inicalizacion de la siguiente manera:
int x = 0;
int y = this.x;
En este caso, el uso de la palabra reservada this de manera automática es lo que genera el error, ya que this hace referencia a una instancia de objeto que aun no existe.
SOLUCIÓN:
Para este caso, es necesario hacer uso de un incializador como lo es un Contructor. Recordemos que cada vez que se hace uso de la palabra reservadad new se hace una llamada al método constructor de la clase. Esto permite que ala instancia del objeto se cree, y por lo tanto que exista una referencia a un campo de instancia:
int x = 0;
int y;
Program()
{
y = x;
}
Como les comentaba, no es un error muy complejo, pero es de esos detalles del lenguaje/compilador que ale la pena conocer y nos permiten entender mucho más el porque de algunos códigos que de repente nos encontramos.
Saludos
Eliud Carrera / Mr. Black
nax_hh - 03/11/2009 13:45:11
es muy interesante.. nunca sabes cuando se va a dar el caso de un error así
muchas gracias