我有以下代码:
class Foo<T> where T : struct
{
private T t;
[...]
public bool Equals(T t) { return this.t == t; }
}
当我尝试编译时,它给了我以下错误:
运算符“==”不能应用于“T”和“T”类型的操作数
为什么做不到?如果约束是where T : class
它会起作用的。但我需要它是值类型,因为在我的实现中,这个泛型将始终是一个枚举。
我正在做的就是使用Object.Equals()
方法来规避这种情况。它会始终确保正确的行为,因为我只是在 T 之间进行比较?