为什么编译器会抛出以下错误,不允许使用此代码?(我正在使用启用了 C# 7.3 的 VS 2017。)
CS0019 运算符“==”不能应用于类型为 'T' 和 'T' 的操作数。
CS0019 运算符“==”不能应用于类型为 'T' 和 'T' 的操作数。
public class GenericTest<T> where T : Enum
{
public bool Compare(T a, T b)
{
return a == b;
}
}
没有泛型的版本当然是完全有效的。
public enum A { ONE, TWO, THREE };
public class Test
{
public bool Compare(A a, A b)
{
return a == b;
}
}
class
、MyClass
、delegate
和Type
没有这个限制,而struct
、enum
、unmanaged
和IMyInterface
有。换句话说,只有编译器能确定它是引用类型时才允许这样做。 - Sinatr