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

      

  • 相关阅读:
    观察者设计模式
    JSP中用jsp:param传递中文参数出现乱码
    使用.msi进行安装mysql程序(超详细)
    扒来的lstdc++.6.0.9有效解决方案
    HTML响应状态码
    砸壳
    ipv6
    犀利的文章
    安装ReactNative开发IDE
    创建ReactNative的iOS项目
  • 原文地址:https://www.cnblogs.com/WebApp-DotNet/p/6211284.html
Copyright © 2011-2022 走看看