• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#中的==和Equals的区别

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一,值类型中的比较,对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false。

            int ai = 1;
            int bi = 1;
            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都指向与同一块地址


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#编程高并发的几种处理方法发布时间:2022-07-13
下一篇:
C#设计模式(1)——简单工厂模式发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap