码迷,mamicode.com
首页 > 其他好文 > 详细

==和Equal()的区别

时间:2020-12-01 12:02:02      阅读:2      评论:0      收藏:0      [点我收藏+]

标签:方法   存储   内容   string类   s函数   内存   类型   引用类型   的区别   

C#中,判断相等有两种方式,一种是传统的==操作,一种是object提供的Equals方法。二者的区别在于:

一、==操作符判断的是堆栈中的值,Equlas判断的是堆中的值。

C#提供值类型和引用类型,值类型存储在栈上,故用==判断是直接判断其值是否相等,因为值类型不存在堆中的数据,因此值类型的Equals也是判断数据。即,对于值类型而言,==与Equals相同,均是判断其值是否相等。

对于引用类型而言,其栈中存储的是对象的地址,那么==就是比较两个地址是否相等,即是否指向同一个对象;Equals函数则是比较两个对象在堆中的数据是否一样,即两个引用类型是否是对同一个对象的引用。

二、String类型特殊

String类型虽然是引用类型,但是对String对象的赋值却按照值类型操作。

例如:

String s1="hello";
String s2="hello";

对s2初始化的时候,并没有重新开辟内存,而是直接将其地址指向s1的内容“hello”。这样一来,string类型虽然是引用类型,但是其==操作和Equals操作都是一样的,均比较值是否相等。

==和Equal()的区别

标签:方法   存储   内容   string类   s函数   内存   类型   引用类型   的区别   

原文地址:https://www.cnblogs.com/dangnianxiaoqingxin/p/14041008.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!