C# 中 equals( ) 和 == 的区别和用法
equals:
下面的语句中,x、y 和 z 表示不为 null 的对象引用。
* 除涉及浮点型的情况外,x.equals(x) 都返回 true。
* x.equals(y) 返回与 y.equals(x) 相同的值。
* 如果 x 和 y 都为 nan,则 x.equals(y) 返回 true。
* 当且仅当 x.equals(z) 返回 true 时,(x.equals(y) && y.equals(z)) 才返回 true。
* 只要不修改 x 和 y 引用的对象,对 x.equals(y) 的相继调用将返回相同的值。
* x.equals(null) 返回 false。
==:
对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回 true,否则返回 false。
对于 string 以外的引用类型,如果两个操作数引用同一个对象,则 == 返回 true。
对于 string 类型,== 比较字符串的值。
equals与==的区别
"==" : 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
"equals" : 操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
而字符串是一个特殊的引用型类型,在c#语言中,重载了string 对象的很多方法方法(包括equals
总结如下:
1、对于值类型,==和equals等价,都是比较存储信息的内容。
2、对于引用类型,==比较的是引用类型在栈中的地址,equals方法则比较的是引用类型在托管堆中的存储信息的内容。
using system; namespace equalstest { class equalstest { static void main(string[] args) { //值类型 int x = 1; int y = 1; console.writeline(x == y);//true console.writeline(x.equals(y));//true //引用类型 a a = new a(); b b = new b(); //console.writeline(a==b);//报错 console.writeline(a.equals(b));//false //字符串(最像值类型的引用类型) string m = "1"; string n = "1"; console.writeline(m==n);//true console.writeline(m.equals(n));//true //结构体(最像引用类型的值类型) t t = new t(); v v = new v(); //console.writeline(t == v);//报错 console.writeline(t.equals(v));//true console.read(); } } class a { public int x = 1; } class b { public int x = 1; } struct t { int x; } struct v { int x; } }
原址:https://blog.csdn.net/studyofnet/article/details/16842235
https://www.cnblogs.com/9cct/p/7749358.html
上一篇: window phone 获取经纬度信息
下一篇: seo利用博客做外链最有效的方法
推荐阅读
-
简单谈谈php中ob_flush和flush的区别
-
python 中readline 和readlines的区别
-
CSS3中:nth-child和:nth-of-type的区别深入理解
-
Linux中sudo、su和su -命令的区别小结
-
Angular.js中ng-if、ng-show和ng-hide的区别介绍
-
ajax中的async属性值之同步和异步及同步和异步区别
-
PHP中抽象类和接口的区别
-
详解C#用new和override来实现抽象类的重写区别
-
SQL2005中char nchar varchar nvarchar数据类型的区别和使用环境讲解
-
正史中的诸葛亮到底是什么样的 和演义中的区别有多大