C#-有没有办法将两个类型参数约束为必然不同?

时间:2018-11-15 18:49:57

标签: c# class types type-constraints

我正在构建一个MyClass<T1, T2> : IEnumerable<Tuple<T1, T2>>类,但是要使其在我的应用程序上下文中具有某种意义,我需要确保T1 != T2

是否有约束T1T2的正确方法,以使它们不是同一类型?

1 个答案:

答案 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.");
}