C#相等判断实例报错分析及解决(2)

不过我个人还是建议如果是比较值,还是转换为对应的值类型进行比较,这样比较清晰,不容易犯错,大家也不用搞清楚 == 和 Equals 之前的细微差别。

ps: 如果object 的类型是 string , 上面的结果又会有所不同,有兴趣的同学可以自己尝试一下。

是否可以这样理解,我们在int32 装箱后的对象上调用Equals 方法,会走到Int32的Equals 方法上?因为看object 方法的Equals 并没有看到这个逻辑。
-----------------------------------------------------------------------
object.cs

[__DynamicallyInvokable]
 public virtual bool Equals(object obj)
 {
 return RuntimeHelpers.Equals(this, obj);
 }

[__DynamicallyInvokable]
 public static bool Equals(object objA, object objB)
 {
 if (objA == objB)
 return true;
 if (objA == null || objB == null)
 return false;
 return objA.Equals(objB);
 }
-------------------------------------------------------------------
RuntimeHelper.cs
 [SecuritySafeCritical]
 [MethodImpl(MethodImplOptions.InternalCall)]
 public new static extern bool Equals(object o1, object o2);

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d50ee43a7731e15611f083d623c15024.html