博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#Equals()和运算符==的区别
阅读量:5044 次
发布时间:2019-06-12

本文共 2190 字,大约阅读时间需要 7 分钟。

1.对于值类型

如果对象的值相等,则相等运算符==返回True,否则返回False

2.对于引用类型

equals方法比较的是两个对象指向的内存空间内容是不是相同。也就是比较两个引用类型是否是对同一个对象的引用,即两个对象的内容是否相等。

对于string类型,==比较字符串的值

对于引用类型,==操作符类似于比较的是文件夹的路径是否相同,而equals方法比较的是文件夹中的内容是不是一样。

using System;namespace Equals和等号的区别{    class ClassPerson    {        private string name=null;        public ClassPerson(string strname)        {            name = strname;        }        public string Name        {            set { name = value; }            get { return name; }        }    }    class Program    {        static void Main(string[] args)        {            string s1 = "test";            string s2 = "test";            Console.WriteLine(s1 == s2);    //True            Console.WriteLine(s1.Equals(s2));   //True            object o1 = s1;            object o2 = s2;            Console.WriteLine(o1 == o2);//True            Console.WriteLine(o1.Equals(o2));//True            string s3 = new string(new char[] { 't', 'e', 's', 't' });            string s4 = new string(new char[] { 't', 'e', 's', 't' });            Console.WriteLine(s3 == s4);//True            Console.WriteLine(s3.Equals(s4));//True            object o3 = s3;            object o4 = s4;            Console.WriteLine(o3 == o4);//False            Console.WriteLine(o3.Equals(o4));//True            ClassPerson p1 = new ClassPerson("ltp");            ClassPerson p2 = new ClassPerson("ltp");            Console.WriteLine(p1 == p2);//False            Console.WriteLine(p1.Equals(p2));//False            ClassPerson p3 = new ClassPerson("ltp");            ClassPerson p4 = p3;            Console.WriteLine(p3 == p4);//True            Console.WriteLine(p3.Equals(p4));//True        }    }}
因为类型是存储在内存中的堆栈(以下简称),而引用类型的变量在中仅仅是存储引用类型变量的地址,而其本身则存储在中。

==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在中存储的地址是否相同,即中的内容是否相同。

equals操作表示的是两个变量是否是对同一个对象的引用,即中的内容是否相同。

堆和栈的区别是?

1、栈区(stack)―   由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) ―   一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
 
 
堆和栈的区别可以用如下的比喻来看出: 使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。 使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。

转载于:https://www.cnblogs.com/fornet/archive/2013/03/20/2976156.html

你可能感兴趣的文章
189. Rotate Array 从右边开始翻转数组
查看>>
用wget命令下载jdk
查看>>
python之路 Javascript的学习
查看>>
【旧文章搬运】Windbg+Vmware驱动调试入门(四)---VirtualKD内核调试加速工具
查看>>
转载:mysql数据库密码忘记找回方法
查看>>
scratch少儿编程第一季——06、人在江湖混,没有背景怎么行。
查看>>
面向对象1
查看>>
在ns2.35中添加myevalvid框架
查看>>
【贪心+DFS】D. Field expansion
查看>>
为什么要使用href=”javascript:void(0);”
查看>>
二进制文件的查看和编辑
查看>>
C++中将string类型转换为int, float, double类型 主要通过以下几种方式:
查看>>
Hack工具
查看>>
多余的判断
查看>>
Android开发之监听或获取手机短信内容 分类: Android 消...
查看>>
foreach---集合已修改;可能无法执行枚举操作。
查看>>
BZOJ-3505-数三角形-CQOI2014
查看>>
CentOS 安装 debuginfo-install
查看>>
CSS布局:让页底内容永远固定在底部
查看>>
RichEdit
查看>>