C# == 运算符详细做什么?

2024-02-24

在 C# 中,当您在两个对象上使用“==”运算符进行比较时,后台到底发生了什么?它只是比较地址吗?或者是类似 Equals() 或 CompareTo() 的东西吗?

PS:java中的“==”运算符怎么样?它的行为相同吗?


据我所知:

  • 它按值(相等)比较值类型
  • 它通过引用(标识)比较引用类型
  • 除非 == 运算符重载,否则它会调用该运算符。

Equals 在对象中实现,也可以被覆盖。 Object 中的默认实现对引用类型执行引用比较。所以默认情况下,Equals 和 == 的作用是相同的。

我认为在java中你不能重载==运算符。但我的 Java 知识已经相当过时了。

Edit:请注意,==运算符是静态方法。它在编译时根据变量或字段的类型进行绑定。Equals是在运行时根据实际运行时类型找到的虚拟方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# == 运算符详细做什么? 的相关文章

随机推荐