C# 比较 int 和 long 作为对象[重复]

问题描述 投票:0回答:1

如果比较“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

screenshot

这是为什么?

编辑:

updated screenshot

c# .net object equality equals-operator
1个回答
0
投票

这是因为您隐式地将变量装箱到堆中,这会创建新的引用,这就是为什么

equals2
false

© www.soinside.com 2019 - 2024. All rights reserved.