Pregunta

Posible duplicado:
Expresión de lambda: == vs.Equals ()

Hola,

Utilizo mucho la palabra clave es igual a comparar variables y otras cosas.

pero

wines = wines.Where(d => d.Region.Equals(paramRegion)).ToList();

devolver un error en tiempo de ejecución cuando en la región de datos es nula

Tuve que usar el código

wines = wines.Where(d => d.Region == paramRegion).ToList();

Para deshacerse del error.

¿Alguna idea de por qué esto plantea un error?

Gracias.

¿Fue útil?

Solución

No puede llamar a métodos de instancia con referencia de objeto nulo. Debe verificar que la región no sea nula antes de llamar a sus métodos de instancia.

wines = wines.Where(d => d.Region != null && d.Region.Equals(paramRegion)).ToList();

los d.Region == paramRegion se amplía (lo más probable) a object.Equals(d.Region, paramRegion) y ese método estático verifica si los parámetros son nulos o no antes de llamar al método igual ().

También puede escribir la condición en diferente orden si sabe que el paramRegion no puede ser nulo.

Debug.Assert(paramRegion != null);
wines = wines.Where(d => paramRegion.Equals(d.Region)).ToList();

Otros consejos

Básicamente si

d.Region == null

Entonces cualquier llamada de método, aquí está Iguales (...) En eso aumentará una excepción ya que no se inicializa.

Uso puede usar:

paramRegion.Equals(d.Region)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top