Ich möchte überprüfen können, ob ein Wert der Standardwert für seinen Werttyp ist. Idealerweise würde ich gerne sagen:
%Vor% Der Compiler beklagt sich jedoch, dass er in TValue und TValue keinen ==
Vergleich durchführen kann. Dies ist die beste Problemumgehung, die ich bisher gefunden habe:
Gibt es einen eleganteren / korrekeren Weg?
Wirf die Klassenbeschränkung ein und es sollte funktionieren.
%Vor%Oder wenn Sie nur Werttypen möchten, können Sie dies tun.
%Vor%Ihr Problem ist, dass ein generischer Typ (ohne Einschränkung) für jeden Typ "kompilierbar" sein muss. Da nicht alle Typen einen == Operator haben, wird Ihr Code nicht kompiliert.
Eine Möglichkeit, dies zu beheben, ist das Hinzufügen einer Klassenbeschränkung, da Sie standardmäßig (TValue) verwenden, was darauf hindeutet, dass der Code mit anderen Typen arbeiten soll. (Verwenden Sie andernfalls einfach null anstelle des Standardwerts (TValue). Eine Lösung könnte etwas sein, das dem ähnelt, was Bryan Watts vorschlägt
%Vor%oder Sie könnten es in eine Erweiterungsmethode einbinden
%Vor%Zu den hier geposteten Antworten sollten wir meiner Meinung nach auch in der Lage sein, anzugeben, ob Sie Wert oder Referenzgleichheit haben wollen:
%Vor%Wir alle lieben es einfach, eine Unmenge kleiner Hilfsmethoden zu kreieren und zu pflegen, nicht wir: - & gt;