C#中的==和Equals的区别
一,值类型中的比较,对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false。
int ai = ;
int bi = ;
bool bi1 = ai.Equals(bi); //true
bool bi2 = ai == bi; //true
二,字符串中比较,
1,字符串中Equals和==的比较的区别,Equals是比较内容是否一样,==是比较内容存在的地址的
2,对于string 以外的引用类型,如果两个对象引用同一个对象,则 == 返回 true。对于 string 类型,== 比较字符串的值。
//string是String的别名而已,string是c#中的类,String是Framework的类,C# string 映射为 Framework的 String。
//如果用string,编译器会把它编译成String,所以如果直接用String就可以让编译器少做一点点工作。
//如果使用C#,建议使用string,比较符合规范
String a = new String(new char[] { 'h', 'e', 'l', 'l', 'o' });
String b = new String(new char[] { 'h', 'e', 'l', 'l', 'o' });
bool c = a == b; //true
bool d = a.Equals(b); //true string str1 = "Hellow World";
string str2 = "Hellow World";
bool b1 = str1.Equals(str2); //true
bool b2 = str1 == str2; //true StringBuilder sb = new StringBuilder();
sb.Append("Hellow").Append(" World");
string str5 = sb.ToString();
bool b5 = str1.Equals(str5); //true
bool b6 = str1 == str5; //true object str3 = a;
object str4 = b;
bool b3 = str3.Equals(str4); //true 他们的内容是一样的
bool b4 = str3 == str4; //false 是比较内容存在的地址的不一样
三,什么是驻留池?
1, 什么是驻留池?CLR默默地维护了一个叫做驻留池(Intern Pool)的表。这个表记录了所有在代码中使用字面量声明的字符串实例的引用。
2,这说明使用字面量声明的字符串会进入驻留池,而其他方式声明的字符串并不会进入,也就不会自动享受到CLR防止字符串冗余的机制的好处了。
string str1 = "Hellow World";
string str2 = "Hellow World";
bool b1 = str1.Equals(str2); //true
bool b2 = str1 == str2; //true
以上这两个同时返回true,也是存在驻留池的概念,因为在驻留池表中有这个字符,所以系统不会性开辟一块内存空间来储存,str1和str2都指向与同一块地址
C#中的==和Equals的区别的更多相关文章
- java中的==和equals的区别
关于JAVA中的==和equals函数的区别 今天在研读Thinking in java 时注意到==和equals的区别,于是就通过查看JDK_API才读懂了他们的区别,于是将心得分享一下,望批评指 ...
- java中hashcode和equals的区别和联系
HashSet和HashMap一直都是JDK中最常用的两个类,HashSet要求不能存储相同的对象,HashMap要求不能存储相同的键. 那么Java运行时环境是如何判断HashSet中相同对象.Ha ...
- java中等于和equals的区别
面试的时候没答上,很受打击,特写在这里. ==是判断两个变量或实例是不是指向同一个内存空间equals是判断两个变量或实例所指向的内存空间的值是不是相同 除了String和封装器,equals()和“ ...
- Scala中==,eq与equals的区别
根据官方API的定义: final def ==(arg0: Any): Boolean The expression x == that is equivalent to if (x eq null ...
- Java中的==和equals的区别详解
1.基础知识 (1)String x = "hello"; (2)String x = new String ("hello"); 第1种方式的工作机制是,首先 ...
- JAVA中的==和equals()的区别
一.先来说说Java的基本数据类型和引用类型 八大基本数据类型:Byte,short,int,long,double,folat,boolean,char,其中占一个字节的是byte,short和ch ...
- C#中ReferenceEquals和Equals的区别
ReferenceEquals()判断两个字符串是否指向相同的内存地址:(判断引用) Equals,先判断两个字符串有相同的内存位置,是则两个字符串相等:否则逐字符比较两个字符串,判断是否相等(先判断 ...
- 浅谈==和equals的区别
java中的==和equals的区别? 看上面的代码,输出的结果是: true false true true 1.为什么会有上面的区别呢?==和equals比较的到底是什么呢? 搞清楚两者的区别其实 ...
- JAVA中“==”与equals()方法区别
equals 方法是 java.lang.Object 类的方法 有两种用法说明: ()对于字符串变量来说,使用"=="和"equals()"方法比较字符串时, ...
随机推荐
- 解决报错:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized
Cannot create PoolableConnectionFactory (The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized . ...
- Qt android 配置
http://www.cnblogs.com/ztzheng/p/3703716.html
- SpringCloud 教程 (四) docker部署spring cloud项目
一.docker简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机). ...
- CentOS 6 修改时间和时区及设置修改及时间同步
一.时区 date -R; date ; hwclock --show ; ps -ef|grep ntpd 显示时区 date --help 获取帮助 date -R date +%z 上面两个命令 ...
- 通过Hadoop jmx收集Namenode,Jobtracker相关信息
经常会有一些Hadoop监控的需求,例如datanode节点掉线,Tasktracker blacklist的数量,以及Namenode,Jobtracker的内存GC信息等. 之前采用Hadoop ...
- Day3 01 枚举
枚举:关键字 enum 主要为了限定了选择范围,声明了一组相关的值类型的集合. 1.枚举类型,实质上是整整 2.如果不进行赋值操作,枚举类型从0开始递增. 3.枚举不能定义字段 属性 方法. 例如 ...
- linux中shell变量$#,$@,$0,$1,$2的含义解释<转>
linux中shell变量$#,$@,$,$,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行的命 ...
- What is the difference between Kill and Kill -9 command in Unix?
w difference kill -9 pid and kill pid command - Ask Ubuntu https://askubuntu.com/questions/791841/d ...
- 用Vue来实现音乐播放器(十七):歌手页右侧快速入口实现
快速入口的列表是其实是之前处理的歌手的数据中的关于title的列表 shorcutList属性是计算属性 通过ret数组中的title计算到的 所以我们要在singer.vue组件中将数据传入到l ...
- CAS KVM 虚拟机的保护与恢复
目录 目录 方式一 方式二 方式一 思路:以 QCOW2 格式来备份和恢复被保护的 KVM 虚拟机 Step1:centos7_0(base qcow2) 以 qcow2 格式写入到 iSCSI 设备 ...