首页 理论教育 C#编程新手手册:掌握object方法的应用

C#编程新手手册:掌握object方法的应用

时间:2023-10-22 理论教育 版权反馈
【摘要】:1)定义类mm,并在其中分别定义字段name和参数为name的方法。3)分别为实例对象mm1和mm2设置参数为“张三”。7)分别调用Equals()和ReferenceEquals()进行赋值后的比较处理。所以在具体声明时,并不需要明确地将System.object指定为基类。在自定义的类中,可以对System.object内的所有方法重写,Finalize()和MemberwiseClone()除外。注意1)如果要实现Equals()或GetHashCode()的重写,必须对这两个方法全部重写,否则在编译时会出现错误信息提示。2)GetHashCode()产生的散列值不是唯一的。

C#编程新手手册:掌握object方法的应用

当使用值类型对象进行处理时,如果两者相等则Equals()方法返回true,否则返回false。如果处理的是引用类型对象,引用的对象相同则返回true,否则返回false。

1.虚方法重写

方法Equals()既可以是静态方法,也可以是虚方法,通过自定义类可以重写虚方法形式的Equals()。而方法ReferenceEquals()只有静态形式。

实例49:根据创建的对象输出显示两对象的比较结果

下面通将过一个实例来说明使用Equals()和ReferenceEquals()的具体流程。本实例保存在“光盘:\daima\10”文件夹内,项目名为xuwaychong。实例的功能是根据创建的对象输出显示两对象的比较结果。实例文件的主要代码如下所示:

978-7-111-36370-5-Part02-368.jpg

978-7-111-36370-5-Part02-369.jpg

上述实例代码的设计流程如下。

1)定义类mm,并在其中分别定义字段name和参数为name的方法。

2)分别定义类mm的实例对象mm1和mm2。

3)分别为实例对象mm1和mm2设置参数为“张三”。

4)分别调用Equals()和ReferenceEquals()进行比较处理。

5)通过WriteLine()输出比较处理的结果。

6)赋值对象mm1等于mm2。(www.xing528.com)

7)分别调用Equals()和ReferenceEquals()进行赋值后的比较处理。

8)通过WriteLine输出赋值后的比较处理的结果。

上述实例代码执行后,将分别调用比较方法输出对应的结果,如图10-9所示。

978-7-111-36370-5-Part02-370.jpg

图10-9 实例执行结果

从图10-9的所示结果可以看出,虽然类mm的对象mm1和mm2的参数都是“张三”,但是两者依旧不是同一个对象。只有使用“mm1=mm2”进行赋值处理后,两者才完全相同。

2.方法重写

当自定义一个类后,即使没有指定基类也会隐式的把System.object作为基类。所以在具体声明时,并不需要明确地将System.object指定为基类。在自定义的类中,可以对System.object内的所有方法重写,Finalize()和MemberwiseClone()除外。

注意

1)如果要实现Equals()或GetHashCode()的重写,必须对这两个方法全部重写,否则在编译时会出现错误信息提示。

2)GetHashCode()产生的散列值不是唯一的。

3)在GetHashCode()种不能出现异常。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈