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()比较的也是对象本身

      

  • 相关阅读:
    六个月的实习
    cookbook学习第二弹
    cookbook学习第一弹
    maketrans translate
    Python strip函数用法小结
    【翻译】How To Tango With Django 1.5.4 第一章
    os相关方法总结
    python基础(一)
    bash快捷键
    Linux基本命令
  • 原文地址:https://www.cnblogs.com/WebApp-DotNet/p/6211284.html
Copyright © 2011-2022 走看看