C#泛型类型约束 - 防止类型参数相同?

时间:2011-01-07 09:44:19

标签: c# .net generics

考虑以下通用:

class Foo<T, U> {}

是否可以防止T和U成为同一类型?这个问题出于好奇。

4 个答案:

答案 0 :(得分:4)

不,不是。这里列出的唯一选项是Constraints on Type Parameters

答案 1 :(得分:2)

http://msdn.microsoft.com/en-us/library/d5x73970%28v=vs.80%29.aspx告诉我们有6种约束。不包括平等。

答案 2 :(得分:2)

正如其他人所指出的,您不能使用类型约束,但您仍然可以使用静态构造函数添加运行时检查。见http://en.csharp-online.net/ECMA-334:_25.1.5_Static_constructors_in_generic_classes

答案 3 :(得分:1)

不,没有这样的事情。但您可能希望使用模板元编程来查看其他语言,例如D - 它们是更强大的,泛型的编译时变体。