使用比较运算符,如'!='和'==',将值约束为C#中的泛型
使用比较运算符,如'!='和'==',将值约束为C#中的泛型
这个问题已经有了答案:
我有下面的代码:
class Foo where T : struct { private T t; [...] public bool Equals(T t) { return this.t == t; } }
当我尝试编译时,它会给我以下错误消息:
\'==\'运算符不能应用于类型为\'T\'和\'T\'的操作数
为什么不能这样做?如果约束是where T : class
,那么它就可以工作了。但是我需要它成为值类型,因为在我的实现中,这个泛型将始终是枚举类型。
为了绕过这个问题,我正在使用Object.Equals()
方法。它会确保始终正确吗?因为我只是在比较T之间的差异。
admin 更改状态以发布 2023年5月19日