Standardwertprüfung mit generischen Typen [duplizieren]

8

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:

%Vor%

Gibt es einen eleganteren / korrekeren Weg?

    
StriplingWarrior 02.02.2010, 20:32
quelle

4 Antworten

37
%Vor%     
Bryan Watts 02.02.2010, 20:41
quelle
4

Wirf die Klassenbeschränkung ein und es sollte funktionieren.

%Vor%

Oder wenn Sie nur Werttypen möchten, können Sie dies tun.

%Vor%     
ChaosPandion 02.02.2010 20:36
quelle
1

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%     
Rune FS 02.02.2010 20:48
quelle
0

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;

    
herzmeister 02.02.2010 21:09
quelle

Tags und Links