C# == equals 本质理解

using System;
using System.Diagnostics;
using System.Text;
using System.Collections;
using System.Collections.Generic;class Test
{static void print(object obj){Console.WriteLine(obj);}class CDefOveride //C# 的所有类都默认继承于object,这里不用写继承,也可以写,有点诡异
    {public override bool Equals(object obj)//重写object.Equals(object obj),系统的string类也是这么做的
        {print("cdefoveride.equals");return true;}}static void Main(){string sa = new string(new char[] { 'h', 'e', 'l', 'l', 'o' });string sb = new string(new char[] { 'h', 'e', 'l', 'l', 'o' });print(sa.GetHashCode() + "," + sb.GetHashCode());print(sa.Equals(sb));//true,调用string.equals(string)print(sa == sb);//true,string的operator ==object oa = sa;object ob = sb;print(oa.Equals(ob));//true, 多态调用,实际调用的是string.Equals(object)print(oa == ob); //falseobject oc = new object();object od = new object();print(oc.Equals(od)); //false, object.equals(object)print(oc == od);//false//如果没有实现重写,对于引用类型,那么原始的object.equals()与 ==没有任何区别,二者总能得到一样的结果//因为引用类型其实是一个指针,==比较的是指针的值,也就是地址,equals比较的也是地址。//string类重写了==和equals,实现了字符串内容的比较,而非地址的比较。object o1 = new CDefOveride();object o2 = new CDefOveride();print(o1.Equals(o2)); //false, 多态调用, CDefOveride.Equals(object)int ia = 12;short isa = 12;print(ia.Equals(isa)); // true, short可以转为int,故多态调用Int32.Equals(Int32 obj)print(isa.Equals(ia)); // false, int不能直接转为short,故多态调用Int16.Equals(object obj)
    }}

posted on 2016-11-04 23:21 时空观察者9号 阅读(...) 评论(...) 编辑 收藏

C# == equals 本质理解相关推荐

  1. 面向过程和面向对象的本质理解

    http://kiritor.blog.51cto.com/7400479/1226762/ 面向过程和面向对象的本质理解 面向过程就是分析出解决问题所需的步骤,面向对象则是把构成问题的事物分解成对象 ...

  2. equals()的理解

    equals()的理解 equals()比较的是同一个类型的两个不同对象里的属性们是否都相等,相等返回true,否则返回false. API中某些常用的类(如String.Date.File.包装类等 ...

  3. bert本质理解记录一

    bert的双向理解:本质上来讲就是高层(输入层为最底层)的每个隐藏单元能接受上一层的所有信息(并非只是左边或者右边);类似DNN神经网络,每个隐藏神经元都能接受到上一层的所有信息;双向比单向功能更加强 ...

  4. Lerp 函数本质理解

    今天写了两个知识点,发现 CSDN 上都是抄过来抄过去,虽然看看别人写的能解决自己一大部分困惑,然而深入以后还是有不能理解透彻的地方.所以自己把自己理解的加在后面,如有不对,望指教. Unity 中好 ...

  5. 多分类loss函数本质理解

    一.面对一个多分类问题,如何设计合理的损失函数呢? 1.损失函数的本质在数学上称为目标函数:这个目标函数的目标值符合最完美的需求:损失函数的目标值肯定是0,完美分类的损失必然为0 : 2.损失函数分为 ...

  6. java中equals的理解(1)

    在Java字符串那些事儿一文发表后,朋友给我留言说:比较字符串用equals不就完了呗,干嘛要用"==",吃饱了撑的,能不能来点实际的.其实在文章里我是想表明,Java字符串两种声 ...

  7. 安全的本质--理解CIA和AAA

    1. 安全是什么? 任何应用最本质的东西其实都是数据,安全的本质就是保护数据被合法地使用. 机密性(Confidentiality).完整性(Integrity).可用性(Availability), ...

  8. 论文中常用的反证法思路本质理解

    有些定理从正面不容易证明,从反面反而容易一些,那么就需要用到反证法. 反证法核心思想:假设条件成立(式子1),而结论不成立(式子2),那么就用这两个式子去推,推出某些与目前已知的定理或者公理矛盾的结果 ...

  9. 电机矢量控制原理本质理解及分析仿真

    本篇文章为电机矢量控制FOC的原理详细解析,以及我自己学习的心得,整理了我学习的资源,以一部电机的视角来写的,但是电机控制的本质原理是相同的,希望对大家有帮助!! 觉得本篇文章有帮助的希望点赞!收藏! ...

最新文章

  1. 一位人工智能总监对AI行业的【实话实说】
  2. mysql 设置表的大小_mysql InnoDB建表时设定初始大小的方法
  3. Java 定义字符串数组
  4. 计算机科学计算第二版期末,计算机专业学生期末考试试卷2.pdf
  5. jmeter学习指南之响应断言和beanshell断言
  6. 工厂三兄弟之工厂方法模式
  7. 深入 Python :Dive Into Python 中文版 读书笔记 第13,14,15单元测试
  8. jdbc c3p0 mysql_JDBC + MySQL使用c3p0连接池
  9. imovie打开视频卡死解决办法
  10. Unity Shader:Waveform波形(3)-复合波
  11. 计算机考试总时长,计算机等级考试时间|2013年计算机等级考试时长
  12. fastDFS 无法获取服务端连接资源:找不到可用的tracker
  13. 谷歌,Google,Chrome,检查工具栏常用功能介绍
  14. 百度地图截取指定区域坐标(可伸拉标记点)
  15. distribute by 和 partitioned by 区别
  16. node 脚手架项目,快速删除 node_modules 包的 rimraf 命令
  17. 【苹果推】imessage群发条件文档(推送证书)开发工具Pushnotification
  18. 【Git下载安装与环境配置】
  19. Javascript 执行上下文(ES3)
  20. R语言输出高质量图片

热门文章

  1. 深入浅出地解读Python迭代器和生成器
  2. 为什么做软件类项目,会出现人多,事少,工作量大的情况?
  3. delphi中exit,abort,break,continue,halt,runerro 的区别
  4. Redis常用命令之操作Hash类型
  5. Linux-通过XShell使用sz命令提示找不到
  6. Pytyon3中实现十进制转不同进制
  7. SpringData核心数据访问接口--PagingAndSortingRepository
  8. 一个软件项目的总纲性的测试计划叫什么?
  9. 网络通道联调及SSH服务启动
  10. python计算机基础_python计算机基础