作为C#中的新手,想知道为什么Object
C#类有两个 Equals
带有以下签名的方法.
public virtual bool Equals(object obj);
public static bool Equals(object objA, object objB);
Run Code Online (Sandbox Code Playgroud)
而在Java中只有一种 equals
方法.
Dmi*_*nko 10
第一
public virtual bool Equals(object obj);
Run Code Online (Sandbox Code Playgroud)
是比较对象的标准,典型等方法:if this
等于obj
类似Java的方法
第二
public static bool Equals(object objA, object objB);
Run Code Online (Sandbox Code Playgroud)
是一种糖你不来比较objA
与null
要比较每一次objA
,objB
实例
https://referencesource.microsoft.com/#mscorlib/system/object.cs,f2a579c50b414717
public static bool Equals(Object objA, Object objB)
{
if (objA==objB) {
return true;
}
if (objA==null || objB==null) {
return false;
}
return objA.Equals(objB);
}
Run Code Online (Sandbox Code Playgroud)
Java 确实有类似的方法:
// Please, note Objects instead of Object
Objects.equals(Object a, Object b);
Run Code Online (Sandbox Code Playgroud)