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.引用类型比较引用,值类型比较值。

  • 相关阅读:
    oracle Blob处理
    开机启动
    获取本机IP
    MSSQL通用分页过程
    转:Delphi2010小写金额转大写金额的源代码
    HWND Handle HModule区别
    常见问题
    Oracle ORA-01033: 错误解决办法
    lvs- lvs(DR模式)+keepalived
    lb-常用的负载均衡软件
  • 原文地址:https://www.cnblogs.com/fb-boy/p/3460986.html
Copyright © 2011-2022 走看看