在对象化programming的这个world里,基于以上原因,可以看作语法sweet吧,本来不应该有==equals是标准.==确实很方便,更直观。那么我们因为便利性而使用==,,==最好理解为:以比较的类型为前提,决定比较的方式。即,值类型比较值,对象类型比较引用

看看msdn对于 == equals的解释:
== 
的解释:
对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回 true,否则返回 false 对于 string 以外的引用类型,如果两个操作数引用同一个对象,则 == 返回 true 对于 string 类型,== 比较字符串的值。
equals
的解释:
如果当前实例是引用类型,Equals(Object)方法测试引用相等性,并调用Equals(Object)方法等效于调用ReferenceEquals方法。 引用相等性意味着进行比较的对象变量引用同一个对象
如果当前实例是值类型,Equals(Object)方法测试值是否相等

 对于引用类型来说,
等号(==)比较的是两个变量的引用” 是否一样,即是引用的地址是否相同。
而对于equals来说仍然比较的是变量的  ”内容” 是否一样。
那么object a1=15,以及 object =15. 对于内容层面来说,两者完全相同,返回true,这样就说的通了!

Java 不允许重载操作符,所以 == 符号的行为是固定的。
C# 
 == 符号的行为你是可以通过重载操作符去修改的,这提供了更灵活的编程方式,但增加了代码的理解难度,也是 Java 不允许重载操作符的原因。

我相信c#语言的设计,本身遵循的是一种极简的的逻辑在里边,以此为基础去理解各种变化就可以了,如果累举各种细节情况来分析,反而把自己绕进去了。
这个极简的逻辑,我的观点,补充一下上面说过的:
1.
在对象化编程的世界里,本来不应该有==equals比较值,refrenceequal比较引用,本来从逻辑上来说,就足够了,没==什么事。
2.
==确实很方便,更直观。那么我们因为便利性而使用==,可以看作语法糖,c#重写了==,使程序员在equalsrefrenceequals之外,有一个更便捷的方式。但使用==的理念必须清晰,就如3所说。
3.
基于以上原因,==最好理解为:以比较的类型为前提,决定比较的方式。即,值类型比较值,对象类型比较引用

以这种极简的观念出发,赋予两个object对象,因为object是对象基类,值被包装过了进行的对比,所以是引用比较,地址也不同。


下一篇: 如何look注释
上一篇: Setting pseudo static /URL to rewrite /rewrite mod
标签:

欢迎转载,转载时必须以链接形式注明来自 【南京典乐科技】
专业服务:南京网站建设,南京网站制作,南京网站设计,南京网站制作公司
咨询电话:13851941123(7*24小时在线服务)
公司网址:本文地址:http://m.025app.com/news/detail_198.html

 
公司简介 | 联系我们 | 知识中心
Copyright © 南京典乐科技 版权所有
苏ICP备12085975号
首页
咨询电话
联系我们