Frage

Mögliches Duplikat:
Lambda Ausdruck: == vs. .equals ()

Hi,

Ich verwende viel das Schlüsselwort, um Variablen und andere Dinge zu vergleichen.

aber

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

Gibt einen Fehler zur Laufzeit zurück, wenn in der Datenregion null ist

Ich musste den Code verwenden

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

den Fehler loswerden.

Irgendwelche Ideen, warum dies einen Fehler aufwirft?

Vielen Dank.

War es hilfreich?

Lösung

Sie können Instanzmethoden mit Null -Objektreferenz nicht aufrufen. Sie sollten überprüfen, ob die Region nicht null ist, bevor Sie ihre Instanzmethoden aufrufen.

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

Das d.Region == paramRegion wird (höchstwahrscheinlich) erweitert auf object.Equals(d.Region, paramRegion) und diese statische Methode prüft, ob die Parameter null sind oder nicht, bevor Sie die Equals () -Methode aufrufen.

Sie können die Bedingung auch in unterschiedlicher Reihenfolge schreiben, wenn Sie wissen, dass die paramRegion kann nicht Null sein.

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

Andere Tipps

Grundsätzlich wenn

d.Region == null

dann jeder Methode -Anruf, hier ist es Gleich (...) Auf diese Weise wird eine Ausnahme einbezogen, da es nicht initialisiert wird.

Verwendung kann verwenden:

paramRegion.Equals(d.Region)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top