zoukankan      html  css  js  c++  java
  • “==” 和 Equals()

    使用.NET做开发三年多了,还以为自己的.NET基本功很扎实,谁知一个简单的读程序我却做错了……

    教训是:常常你自己觉得你了解的很清楚了,但其实那是一种思维定势,也许你根本就没真正了解。这种不求甚解的学习,是计算机技术最最要不得的。

    言归正传,代码清单如下:

    Code

    我就不卖关子了,这段代码的输出是: true true false true 。

    下面解释一下结果,其实就是操作符重载虚方法重写

    前面两个true就不必说了,而后面的true就是因为System.String类型重写了其基类System.Object的虚方法Equals,false呢,因为“==”是操作符重载,所以它会找一个参数匹配的重载方法,即Object的“==”,而Object的“==”的语义是,对象的同一性,所以返回false。

    看到一篇文章说自己如何区别使用“==”和Equals:如果是值类型就(省略……)如果是引用类型就(省略……),其实个人觉得问题的根本和值类型或者引用类型没有必然关系,就是看是否重载了操作符,或者重写了Equals虚方法。

    第一篇文章,先写到这里了,嘿嘿。

    欢迎拍砖。

  • 相关阅读:
    ccnet 配置真折腾
    幻灯片效果代码(asp版本)
    Microsoft Office 服务器系统要求
    取数据库N到M的记录
    [心得]关于iframe页面滚动条。
    和我一起学Windows Workflow Foundation(2)让WF通过参数接收数据 [转]
    新闻图片效果
    AJAX
    和我一起学Windows Workflow Foundation(1)创建和调试一个WF实例 [转]
    关闭父窗口,打开新窗口
  • 原文地址:https://www.cnblogs.com/Cheese_Ren/p/1290236.html
Copyright © 2011-2022 走看看