c# - 重复拳击做出不同的引用?

标签 c# equals boxing equals-operator

我试着理解这段代码:

double b = 3;
object o = b;
Console.WriteLine(o.Equals(3));//false
Console.WriteLine(o.Equals(b));//true
Console.WriteLine( o == (object)b );//false
  1. 每个新的拳击都对对象 b 进行不同的引用?
  2. 如果 1. 为真,为什么 o.Equals(b)true
  3. 如果 Equals 不检查引用,为什么 o.Equals(3)false

谢谢。

最佳答案

  1. 是的,每次装箱一个值类型时,都会创建一个新对象。 More on boxing here.
  2. Equals 检查值是否相等,而不是引用是否相等。 ob 相同:double 的值为 3.0
  3. 3 这里是一个int,不是一个doubleEquals对不同的类型是不行的任何使它们兼容的转换,就像编译器通常做的那样。 o.Equals(3.0) 将返回 true

关于c# - 重复拳击做出不同的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13621829/

相关文章:

java - Java 中的日期和时间比较

java - Java中如何将int[]转换为List<Integer>?

c# - 从 Dictionary<string, object> 中获取值而不拆箱?

Java装箱和拆箱

c# - "yield keyword"在迭代器 block 之外有用吗?

c# - 如何在 C# 中记录低级操作系统文件事务?

python - 忽略字符串比较中的大小写

MySQL 等于运算符截断值并且无法按预期工作

c# - 在非托管 c++ dll 中使用托管 c# dll

c# - 多维数组列排序