Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: samuelhm en 23 Mayo 2014, 18:38 pm



Título: c# Null Exception imposible.
Publicado por: samuelhm en 23 Mayo 2014, 18:38 pm
Tengo una clase, que contiene el siguiente codigo:
Código:
do
{
     objeto.image[0] = OtraClase.GetImage();
}while (objeto[0] == null); // Bucle hasta que objeto contenga algo que no sea null;
EventoMeterObjeto(objeto[0]); /// al intentar lanzar mi evento salta un null Reference exception, imposible que sea null en teoria no?




Título: Re: c# Null Exception imposible.
Publicado por: El Benjo en 25 Mayo 2014, 02:00 am
Bueno aquí veo que dentro del bucle haces referencia a 'objeto' sin un índice y dices que el arreglo es la propiedad 'image' del mismo objeto. No sé si por ahí sea el asunto.

Lo que te recomiendo es que veas en el depurador cual es en realidad la variable que es nula.


Título: Re: c# Null Exception imposible.
Publicado por: samuelhm en 25 Mayo 2014, 12:57 pm
Ups lo habia escrito mal en el foro, estaba así:
Código:
do
{
     objeto[0].image= OtraClase.GetImage();
}while (objeto[0] == null); // Bucle hasta que objeto contenga algo que no sea null;
EventoMeterObjeto(objeto[0]); /// al intentar lanzar mi evento salta un null Reference exception, imposible que sea null en teoria no?

Ahora analizandolo, objeto seguro que no es null, pues si no, no habria salido del bloque while, entoces solo queda: puede un evento ser o estar null??


Título: Re: c# Null Exception imposible.
Publicado por: El Benjo en 25 Mayo 2014, 18:30 pm
No, un evento no puede ser null. En todo caso insisto en que (cuando salte el error) compruebes cuál es la variable que está nula. Puede ser que el evento utilice otra variable además de objeto[0] y esa variable sí sea nula.

Si después de eso todavía no funciona entonces te recomiendo que cambies tu código como sigue:

Código
  1. do
  2. {
  3.     objeto[0] = new TipoDeLaVariableObjeto;
  4.     objeto[0].image= OtraClase.GetImage();
  5. }while (objeto[0] == null); // Bucle hasta que objeto contenga algo que no sea null;

(Lo de TipoDeLaVariableObjeto lo cambias por el tipo de tu variable) De esta manera compruebas si el error es realmente por esa variable o no. Pero insisto, fíjate en las demás variables o propiedades que utiliza el evento. Ayúdate de la información que te da el depurador, que para eso está.