泛型约束进行比较。
泛型约束进行比较。
此问题已在此处有答案:
我有这段代码,但它无法编译
public class MyClass { public bool AreEqual(T a, T b) { return a == b; } }
错误信息为:
不能将\"==\"运算符应用于类型\"T\"和\"T\"
这是有道理的,因为T可能是没有实现任何运算符的东西。
不管怎样,我该怎么做才能让它工作呢?
我知道我可以重写我的代码以避免使用==
运算符,但这不是问题所在。
更新
阅读当前的答案后,只是为了更清楚。我知道我可以重写我的代码,但我想知道的更多是。
有没有一种方法可以使我在我的泛型类中使用==
运算符。类似于public class MyClass where T : ==
admin 更改状态以发布 2023年5月22日
T代表什么?
文档帮助添加约束条件
Constraints docu
编辑:为了向投反对票的人澄清我的观点。
using return Equals(a, b);
显然是有意义的,特别是对于引用类型。
因此,Object.Equals
是正确的答案。
并且使用Equals与==之间的区别很重要。
但是对于投反对票的人,您有考虑过吗?
这将编译:
public class MyClasswhere T:class { public bool AreEqual(T a, T b) { return a == b; } }
建议某人考虑约束条件并不是错的,只是他们“需要”知道的不是这个。
我的错,因为我不知道发帖人不知道Equals() 🙂