c#中的3种对象比较方法

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace CSharp基础
  6. {
  7.     class 对象比较
  8.     {
  9.         public static void Main()
  10.         {
  11.             object obj1 = new object();
  12.             object obj2 = new object();
  13.             //ReferenceEquals方法比较两个对象是不是地址相同
  14.             bool flag = Object.ReferenceEquals( obj1 , obj2 );
  15.             Console.WriteLine( flag ); // false
  16.             Console.WriteLine(Object.ReferenceEquals(nullnull)); //true
  17.             //虚拟的Equals()方法,有两个版本,一个静态版,一个虚方法版
  18.             //虚方法可以自已重写,实现值的比较,如果年纪相等,我们就认为对象相等
  19.             Person per1 = new Person( "aladdin" , 20 );
  20.             Person per2 = new Person("zhao", 20);
  21.             Console.WriteLine( per1.Equals( per2 ) );//因为年纪都是20,所以结果为true
  22.             //静态Equals方法也有自已的用处,用来处理null的情况
  23.             bool pflag1 = Person.Equals(nullnull);
  24.             bool pflag2 = Person.Equals(null, per2);
  25.             bool pflag3 = Person.Equals( per1 ,per2 );
  26.             Console.WriteLine(pflag1);//true   如果两个对象都为null,则返回true
  27.             Console.WriteLine(pflag2);//false  如果有一个为null,返回false
  28.             Console.WriteLine(pflag3);//true  如果没有null,则调用我们之前重写过的equals方法,也就是说重写虚方法,也相
  29.             //当于是重写了静态的equals方法
  30.             Console.ReadLine();
  31.         }
  32.     }
  33.     class Person
  34.     {
  35.         public string name;
  36.         public int age;
  37.         public Person( string name , int age)
  38.         {
  39.             this.name = name;
  40.             this.age = age;
  41.         }
  42.         public override int GetHashCode()
  43.         {
  44.             return this.age;
  45.         }
  46.         public override bool Equals(object obj)
  47.         {
  48.             Person per = obj as Person;
  49.             if( per != null )
  50.             {
  51.                 if( per.GetHashCode() == this.GetHashCode() )
  52.                 {
  53.                     return true ;
  54.                 }
  55.                 else
  56.                 {
  57.                     return false ;
  58.                 }
  59.             }
  60.             else
  61.             {
  62.                 return false ;
  63.             }
  64.         }
  65.         
  66.     }
  67. }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值