Object类的用法(一)

    技术2022-05-11  53

    using System;using System.Collections.Generic;using System.Text;

    namespace Object.ReferenceEquals_方法{    class Program    {        static void Main(string[] args)        {            A x = new A();            A y = new A();

                //A x = null;            //A y = null;

                //A x; //与上面加null的不等价  提示错误是:使用了未赋值的局部变量“x"            //A y; //与上面加null的不等价

                //public static bool ReferenceEquals             //  (            //    Object objA,            //    Object objB            //  )

                //确定指定的 Object 实例是否是相同的实例。             //如果 objA 是与 objB 相同的实例,或者如果二者都为空引用,则为 true;否则为 false。

                bool m =object.ReferenceEquals(x, y); //等价于bool m =A.ReferenceEquals(x, y);同下面的Equals方法            Console.WriteLine(m);           //还等价于 bool m = B.ReferenceEquals(x, y); 

                bool n = Program.Equals(x, y);   //这里有点奇怪可以把Program换成A,也可以把Program去掉,等价于n =x.Equals(y);            Console.WriteLine(n);                                             x = y;            n =object.Equals(x, y);  //等价于n =A.Equals(x, y); 还等价于n =x.Equals(y);            Console.WriteLine(n);

                            Console.ReadKey();        }    }    class A{}          class B{}    }

    //对于类的实例的比较,这三种方法是作用是一样的,都是比较引用//所有的类和结构(包裹自定义的)都具有Equals(带一个参数的,Equals(带两个参数的),GetHashCode,GetType,ReferenceEquals,ToString 六个方法

    //所有的类和结构(包裹自定义的)的Equals(带两个参数的),ReferenceEquals和GetType方法都是从Object类继承的,因为他们不是虚拟方法//所以这3个方法一定不是重写的,而其他三个方法都是虚拟的,可以重写。其中Equals(带两个参数的)和ReferenceEquals是静态方法,而GetType方法是实例方法

    //Equals(带一个参数的,Equals(带两个参数的)和ReferenceEquals方法的返回值类型为bool//GetType方法返回值类型为System.Type//GetHashCode方法返回值类型为int 


    最新回复(0)