我正在构建一个MyClass<T1, T2> : IEnumerable<Tuple<T1, T2>>
类,但是要使其在我的应用程序上下文中具有某种意义,我需要确保T1 != T2
。
是否有约束T1
和T2
的正确方法,以使它们不是同一类型?
答案 0 :(得分:2)
如果知道它们应该是什么类型,则可以使用where
类型约束:
class MyClass<T1, T2> : IEnumerable<Tuple<T1, T2>>
where T1 : MyClass1
where T2 : MyClass2
但是没有办法允许它们成为任何类,但是要强制它们不相等。您可能必须在构造函数中引发异常:
if (typeof(T1) == typeof(T2)) {
throw new Exception("Types must not be the same.");
}