答案 0 :(得分:1)
问题是==
的工作方式,因为它不会遍历层次结构树,只是使用值的类型(因为它不是虚拟可覆盖的方法,而是运算符),这是盒装所以对象,通过引用检查功能,所以如果它们不是完全相同的对象(非值),它将返回false。
正如你自己在答案中所说的那样,他们装箱了一个物体。因此,为了解决这个问题,您可以使用Equals
修复您的问题,因为C#会转到值的最顶层子项(在您的情况下,它将是Boolean.Equals
而不是来自Object的operator ==
:
var allEqual = together.All(tuple => tuple.Item1.Equals(tuple.Item2));
答案 1 :(得分:-1)
我很确定这是因为Boxing。 false
项目均为Tuple
,因此object
运算符正在执行参考比较。由于==
被设置为与Item1
不同的object
,因此Item2
引用比较将返回false。