我试着理解这段代码:
double b = 3;
object o = b;
Console.WriteLine(o.Equals(3));//false
Console.WriteLine(o.Equals(b));//true
Console.WriteLine( o == (object)b );//false
- 每个新的拳击都对对象 b 进行不同的引用?
- 如果 1. 为真,为什么
o.Equals(b)
为true
? - 如果
Equals
不检查引用,为什么o.Equals(3)
是false
?
谢谢。
最佳答案
- 是的,每次装箱一个值类型时,都会创建一个新对象。 More on boxing here.
Equals
检查值是否相等,而不是引用是否相等。o
和b
相同:double
的值为3.0
。3
这里是一个int
,不是一个double
,Equals
对不同的类型是不行的任何使它们兼容的转换,就像编译器通常做的那样。o.Equals(3.0)
将返回true
。
关于c# - 重复拳击做出不同的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13621829/