首页 > 编程语言 >C#中的Equals()和==

C#中的Equals()和==

时间:2023-03-28 16:56:00浏览次数:27  
标签:string C# str2 object Equals equals 类型

C#中的类型分为值类型(如int、double等)和引用类型(用关键字class修饰的类型),下面分别针对这两种情况进行说明。

值类型中的Equals()和==

对于值类型来说,因为其只在栈上存在,所以Equals()和==的行为一致,就是判断两个值类型的值是否相等。

引用类型中的Equals()和==

对object来说,这两个方法都是用来判断两个引用类型的引用是否相等。

但是对于string来说,是个例外。上述两个方法在string中的实现是对两个string实例的值的判断。如下:

1 string str1 = "one";
2 string str2 = new StringBuilder("one").ToString();
3 var equals = ReferenceEquals(str1, str2); // false
4 equals = str1 == str2;      // true
5 equals = str1.Equals(str2); // true

这里再稍微提一下上面用到的ReferenceEquals(object,object)方法。顾名思义,这个方法是判断两个object类型实例的的引用是否相同。那下面这个例子会输出什么呢?

1 int i = 5;
2 int d = i;
3 equals = ReferenceEquals(i, d);

输出是false,是因为这里对i和d进行了装箱,导致i和d虽是栈上的同一个区域,但是在堆上分配给i和d的引用并不相同。

标签:string,C#,str2,object,Equals,equals,类型
From: https://www.cnblogs.com/tianlang358/p/17265846.html

相关文章

  • 如何解决MySQL Connector NET xxxx无法卸载的问题(win10)
    使用PowerBI(以下简称PBI)的小伙伴想必都知道,想要在PBI连接MySQL数据库,必须安装MySQLconnectornet,我之前安装过MySQLconnectornet6.9.3,PBI是可以正常连接MySQL的,最近更......
  • oh-my-zsh nvm command not found
    oh-my-zshnvmcommandnotfound如果你在使用oh-my-zsh并且在终端输入nvm命令时提示"commandnotfound",这可能是因为oh-my-zsh没有配置nvm插件导致的。首先......
  • Android Button设置android:background=“@drawable/xxx“无效,<item android:drawable
    问题描述:AndroidButton设置android:background=“@drawable/xxx“无效,<itemandroid:drawable="@color/purple_200"/>无效  解决方法:找到res/values/themes.xm......
  • SIOCSIFADDR:File exist(2023.3.28)
    通常为以下两种情况:①ip冲突导致 ②系统环境配置dhcp且分配ip地址失败使用ifconfig命令设置静态ip,有时掩码设置的明明是255.255.0.0,实际却变成255.255.255.0,有时甚......
  • ASEMI代理NXP汽车芯片MKE02Z32VLC4
    编辑-ZNXP汽车芯片MKE02Z32VLC4参数:型号:MKE02Z32VLC4资格状态:M=完全合格的一般市场流量,P=资格预审动脉炎家族:KE02型关键点属性:Z=M0+core程序闪存大小:16=16KB,32......
  • 20:SwiftUI-HStack
      正文////HStackPage.swift//SwiftUIDeom////Createdbyzhoukang03on2023/3/28.//importSwiftUIstructHStackPage:View{varbody:som......
  • css设置超过固定长度以省略号显示
    1.设置一行内超过规定长度以省略号显示代码:.box1{background-color:orange;/*设置规定长度*/width:100px;/*......
  • FreeSwitch的基本了解和简单使用
    一、安装FreeSwitch系统FreeSwitch本身是跨平台的,作为学习,此处使用windows安装方式,点击下载windows版本的安装包,进行傻瓜式安装,安装后目录结构如下: 其中各文件......
  • JavaScript学习
    从算法又做回了开发。一、作用1)对事件的反应2)改变图像3)验证输入 二、语法1)基本的一些标记,例如数字,字符串,数组等2)变量使用var3)类型有很多,用typeof来看4)使用新变......
  • 2023年CDO需要关注的6个趋势
    ​CDO的角色不会像前几年其他新兴的C级角色那样发展缓慢,快速集中、高效访问、精准分析、共享和货币化数据的现代技术已经到来。因此,数据已成为推动组织转型的最强大资源......