Betrachten Sie die folgende generic:C# generische Typ-Constraints - verhindern, dass Typparameter identisch sind?
class Foo<T, U> {}
Ist es möglich, zu verhindern, T und U die gleiche Art zu sein? Diese Frage ist aus Neugier entstanden.
Betrachten Sie die folgende generic:C# generische Typ-Constraints - verhindern, dass Typparameter identisch sind?
class Foo<T, U> {}
Ist es möglich, zu verhindern, T und U die gleiche Art zu sein? Diese Frage ist aus Neugier entstanden.
Nein, ist es nicht. Die einzigen Optionen, die Sie haben, sind hier aufgeführt Constraints on Type Parameters
http://msdn.microsoft.com/en-us/library/d5x73970%28v=vs.80%29.aspx zeigt uns, dass es 6 Arten von Constraint gibt. Gleichheit ist nicht enthalten.
Nein, so etwas gibt es nicht. Aber vielleicht möchten Sie mit Template-Metaprogrammierung in andere Sprachen schauen, wie D - sie sind viel leistungsfähigere, kompilierbare Varianten von Generika.
Wie von anderen Personen angegeben, können Sie keine Typeinschränkungen verwenden, aber Sie können Laufzeitüberprüfungen mithilfe von statischen Konstruktoren hinzufügen. Siehe http://en.csharp-online.net/ECMA-334:_25.1.5_Static_constructors_in_generic_classes
Ich nehme an, Sie suchen nicht nach Antworten, die massive zusätzliche Einschränkungen auferlegen (z. B. T: Klasse, U: Struktur oder verschiedene Vererbungshierarchien) :-) –
Nicht zur Kompilierzeit. Aber offensichtlich könntest du es zur Laufzeit durch Ausnahme machen :) – digEmAll
Es ist ein Gedankenexperiment. Der in einer Antwort vorgeschlagene statische Konstruktor ist interessant. – Amy