zoukankan      html  css  js  c++  java
  • C# "=="、Equals()、ReferenceEquals()区别

    对于值类型

    int age1 = 30;
    byte age2 = 30;

        

          1、== 比较的是值内容

          2、age2.Equals(age1) = false; Equals比较前需要转换成同类型,age1(int型)需显示转换成byte型

          3、age1.ReferenceEquals(age2) = false; ReferenceEquals比较(判断两个对象的引用是否相等,对于值类型,因为每次判断前都必须进行装箱操作,

            也就是每次都生成了一个临时的object,因而永远返回false。)

    String类型:字符串是特殊的引用类型(CLR可以通过一个string对象共享多个完全一致的string内容)

           string name1 = "Jack";
                string name2 = "Jack";
    
                object o1 = name1;
                object o2 = name2;

         

    其他引用类型

           string name1 = new string(new char[] { 'J', 'a', 'c', 'k' });
                string name2 = new string(new char[] { 'J', 'a', 'c', 'k' });
           object o1 = name1;
                object o2 = name2;

        

        对于引用类型:

          1、== 比较的是类型对象指针

          2、Equals()比较的是托管堆上存储的内容

          3、ReferenceEquals()比较的也是对象本身

      

  • 相关阅读:
    【2019/3/23】周进度报告
    第十周总结
    程序员修炼之道-从小工到专家阅读笔记01
    第九周总结
    用户模板和用户场景
    一维数组最大子数组续
    程序员的自我修养阅读笔记03
    第八周总结
    NABCD项目分析
    第七周总结
  • 原文地址:https://www.cnblogs.com/WebApp-DotNet/p/6211284.html
Copyright © 2011-2022 走看看