object方法_一日一技了解C#中的相等比较之Object.Equals方法

接上一篇,我们大致聊了==与!=,而且也知道了比较两个object类型的值是否相等需要用Equals方法。可以说Equals适合用来比较两个未知类型的对象。Object中其实有两个Equals方法,一个是虚方法,一个是静态方法。可以看看它的实现:

f5a4c06990c1b6cd90afb644dc8d4e33.png

上篇文章我们用Equals比较了两个Object类型对象,在这里我们可以自己实现一个方法:

        public static bool ObjEqual(object p1, object p2)             =>p1==null ? p2==null : p1.Equals(p2);

为什么这么写呢?因为虚方法的这个比较在p1为null时会报空引用的异常。

如果对象的类型在编译时未知,可以使用静态方法,静态方法提供支持null值的相等比较算法:
 object p1 = null; object p2 = 5;             //False Console.WriteLine(object.Equals(p1, p2)); p2 =null; //True Console.WriteLine(object.Equals(p1, p2));
编写泛型类型时Equals是很有用的,因为==于!=无法用于T类型,具体可以看下面的例子:
      class test {            T value;            public void SetValue(T NewValue) {                if (!Object.Equals(NewValue,value))                {                    value = NewValue;                    ValueChange();                }                            }            protected virtual void ValueChange() {                         }        }
当然也有更佳的实现方式不过就需要自己去探索发现了! 今天更新到这儿,喜欢这篇文章就点个?吧!大家晚安啦 9859127460472b5af5f8561655bebbee.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值