zoukankan      html  css  js  c++  java
  • 【.net 基础01】ReferenceEquals,Equals,==的区别

    【Code】

    class Program
        {
            static void Main(string[] args)
            {
                object A = new Person { Name = "jack" };
                object B = new Person { Name = "jack" };
    
                int i1 = 1;
                int i2 = 1;
    
                /*
                 * ReferenceEquals比较的是引用类型
                 */
                // 两个参数会自动装箱,--引用不同,false
                Console.WriteLine(ReferenceEquals(i1, i2));
                // 引用不同,false
                Console.WriteLine(ReferenceEquals(A, B));
    
                /*
                 * 如果Person类不重写Equals方法,Equals方法效果与==一样
                 */
                // 引用类型,引用不同,false
                Console.WriteLine(A.Equals(B));
                // 值类型,值相同,true
                Console.WriteLine(i1.Equals(i2));
                // 引用不同,false
                Console.WriteLine(A == B);
                // 值类型,值相同,true
                Console.WriteLine(i1 == i2);
    
                Console.Read();
            }
        }
    
    class Person
        {
            internal string Name;
        }

    【ReferenceEquals】

    1.ReferenceEquals用于比较引用类型。

    2.如果比较的是值类型(会自动装箱),则返回false。

    【Equals】

    1.Equals用于比较值类型和引用类型。

    2.可以被子类重写。

    3.如果不重写Equals方法,Equals方法效果与==一样,引用类型比较引用,值类型比较值。

    4.如果重写Equals方法,需要重写GetHashcode方法,当该类作为键值对的键时,需要唯一的Hashcode,所以此时的GetHashcode方法需要被重写。

    【==】

    1.Equals用于比较值类型和引用类型。

    2.引用类型比较引用,值类型比较值。

  • 相关阅读:
    JsCV Core v0.2发布 & Javascript图像处理系列目录
    Javascript图像处理
    SOE开发之IMapServerSourceDescription
    SOE之JSONObject
    SOE开发之adddynamiclayertomapserver
    JavaScript 的 async/await
    ArcGIS Engine开发系列:将地图导出为图片的两种方法(ZZ)
    原型链
    更优美的javaScript(2)
    CSS选择器
  • 原文地址:https://www.cnblogs.com/fb-boy/p/3460986.html
Copyright © 2011-2022 走看看