如果比较“object”类型的 2 个变量(Int32 和 Int64),则 Visual Studio 中显示“true”。 如果我将其保存在变量中,它会突然变为“false”。 我已经尝试过 EqualityComparer。值保持不变。
int number1 = 2;
long number2 = 2;
object object1 = number1;
object object2 = number2;
var equals1 = number1 == number2; // true
var equals2 = object1 == object2; // object1 == object2 is true, equals2 is false
这是为什么?
编辑:
这是因为您隐式地将变量装箱到堆中,这会创建新的引用,这就是为什么
equals2
是 false
。