gpt4 book ai didi

c# - 为什么 (object)0 == (object)0 不同于 ((object)0).Equals((object)0)?

转载 作者:IT王子 更新时间:2023-10-29 03:34:03 24 4
gpt4 key购买 nike

为什么下面的表达方式不同?

[1]  (object)0 == (object)0 //false
[2] ((object)0).Equals((object)0) // true

实际上,我完全可以理解 [1],因为 .NET 运行时可能会装箱 整数并开始比较引用。但为什么 [2] 不同?

最佳答案

调用行为不同的原因是它们绑定(bind)到非常不同的方法。

== 案例将绑定(bind)到静态引用相等运算符。创建了 2 个独立的盒装 int 值,因此它们不是相同的引用。

在第二种情况下,您绑定(bind)到实例方法 Object.Equals。这是一个虚拟方法,它将向下过滤到 Int32.Equals 并检查装箱整数。两个整数值都是 0 因此它们相等

关于c# - 为什么 (object)0 == (object)0 不同于 ((object)0).Equals((object)0)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20642202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com