Ich bin verantwortlich für einen LINQ-Anbieter, der einige Laufzeitauswertung von C# -Code durchführt. Als Beispiel:Wie funktioniert GetValueOrDefault?
int? thing = null;
accessor.Product.Where(p => p.anInt == thing.GetValueOrDefault(-1))
Zur Zeit der obige Code mit meinem LINQ-Anbieter nicht aufgrund thing
null arbeiten zu sein.
Während ich mit C# für eine lange Zeit arbeite, weiß ich nicht, wie GetValueOrDefault implementiert ist und daher, wie ich das beheben sollte.
Meine Frage ist also: Wie funktioniert GetValueOrDefault
in dem Fall, dass die Instanz, auf die es aufgerufen wird, null ist? Warum wird kein NullReferenceException
geworfen?
Eine weitere Frage: Wie gehe ich vor, um einen Anruf auf GetValueOrDefault
mit Reflektion zu replizieren, vorausgesetzt, dass ich mit Nullwerten umgehen muss.
Die 'Nullable <>' struct Besonderes ist. Eine Struktur zu sein bedeutet, dass sie nicht wirklich 'null' sein kann, aber die Sprache erlaubt es, sie auf 'null' zu setzen, wodurch nur eine Instanz mit 'HasValue' auf false gesetzt wird. 'GetValueOrDefault' funktioniert hier wahrscheinlich nicht, weil Sie EF (oder einen anderen Abfrageanbieter) verwenden, der nicht weiß, wie er in SQL übersetzt wird. – juharr
was meinst du mit "es funktioniert nicht"? – Default
"funktioniert nicht" - was genau passiert? –