为什么编译器拒绝此代码并出现以下错误?(我用VS 2017用C# 7.3启用。)
CS0019运算符'=='不能应用于类型'T'和'T'的操作数
public class GenericTest<T> where T : Enum
{
public bool Compare(T a, T b)
{
return a == b;
}
}
Run Code Online (Sandbox Code Playgroud)
没有泛型的版本当然是完全有效的。
public enum A { ONE, TWO, THREE };
public class Test
{
public bool Compare(A a, A b)
{
return a == b;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
编译器不能依靠==所提供的每种类型所实现的运算符T。您可以添加一个约束以限制T为class,但是由于该枚举不是引用类型,因此不允许您将其用于枚举。添加struct为约束也将不允许您使用运算符,因为结构并不总是具有该==运算符的实现,但是您可以a.Equals(b)在这种情况下使用。
| 归档时间: |
|
| 查看次数: |
210 次 |
| 最近记录: |