C # generics Klassenoperatoren funktionieren nicht

8

Ich habe ein Problem mit generischen. Wenn ich versuche, weniger Operatoren in generic zu verwenden, findet ihr Aufruf nicht statt. Aber es funktioniert mit der Methode Equals. Das ist eine Testklasse:

%Vor%

Und Klassenprüfer:

%Vor%

Kleiner Test:

%Vor%

Wie kann ich in der Klasse Test von generisch weniger Operatoren verwenden?

    
user3205810 17.01.2014, 09:13
quelle

1 Antwort

11

Überladene Operatoren sind statische Methoden, also nehmen sie nicht am Polymorphismus teil; Sie werden statisch zur Kompilierzeit aufgelöst, basierend auf dem bekannten Typ der Operanden.

In einer generischen Methode kann der Compiler nicht wissen, dass T Test ist (da es tatsächlich etwas anderes sein kann), so dass es die allgemeinste Definition von == verwendet, was ein Referenzvergleich ist.

Beachten Sie, dass wenn Sie eine Einschränkung für die generische Methode hinzufügen, um T zu Test oder eine Unterklasse von Test zu erzwingen, wird es wie erwartet funktionieren, aber es wird natürlich nicht mehr für andere Typen funktionieren ...

    
Thomas Levesque 17.01.2014, 09:17
quelle

Tags und Links