一、值类型的比较

对于值类型来说  两者比较的都是内容”是否相同,即 值 是否一样,很显然此时两者是划等号的。

            int i = 9;int j = 9; Console.WriteLine("i==j"+(i==j)); //true Console.WriteLine("i.Equals(j)"+(i.Equals(j))); //true

二、引用类型的比较

对于引用类型来说,等号(==)比较的是两个变量的引用 是否一样,即是引用的”地址是否相同。而对于equals来说仍然比较的是变量的  内容 是否一样。

1、字符串的比较

            string s1 = "abc";string s2 = "abc"; Console.WriteLine("s1==s2"+(s1==s2));//true Console.WriteLine("s1.Equals(s2)"+(s1.Equals(s2)));//true

string是微软封装的一个字符串类,在内部他已经对 = = 操作符进行了重写。重写后他比较的则是两个变量的内容是否相同,重写后的 = = 操作符内部调用的即是 equals 方法,所以输出的是true

  2、 自定义的其他引用类型——一 person类为例

            Person p1 = new Person("aa",18); Person p2 = new Person("aa",18); Console.WriteLine("p1==p2"+(p1==p2));//false Console.WriteLine("p1.Equals(p2)"+p1.Equals(p2));//false

对于 p1==p2 比较的结果是false,这点是毫无疑问的,因为他俩是两个不同的变量,所以引用的地址也是不同的。但是对于p1.Equals(p2) 返回false,可能有人会产生疑问,p1 和p2的内容是相同的啊,为什么他俩的比较结果却是为false呢?。原因就在于在Equals是Object中的一个虚方法,而person类中没有对她进行重写,因此此时调用的仍是父类中的Equals方法。但是父类是无法知道你都有哪些成员字段的,因此返回的是false。要想让他能够比较两个变量的内容是否相同,那就应该重写Equals方法

public override bool Equals(object obj){Person p = (Person)obj; return (this.Name == p.Name) && (this.Age == p.Age); }

  总结:Equals比较的永远是变量的内容是否相同,而= =比较的则是引用地址是否相同(前提:此种类型内部没有对Equals 或= = 进行重写操作,否则输出可能会有不同)。string 类型是个特例,因为他的内部对这两个都进行了重写。

转载于:https://www.cnblogs.com/dotnetHui/p/8663823.html

C#中Equals和==的比较相关推荐

  1. JAVA 中equals()与==的区别

    原文地址:http://www.chineselinuxuniversity.net/articles/29594.shtml 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存 ...

  2. JAVA中equals空_Java中为什么查询空字符串跟判断是否为null的时候可以不用equals?...(亲测)

    if(id!=null&&id!="") 代码中经常这样写,空字符串跟null 都不用equals吗? 首先,你的 id!="" 这种写法是错误 ...

  3. (转)Java中equals和==、hashcode的区别

    背景:学习辉哥总结的基础知识,从头来,直面短板. 1 问题引入及分析 请看下面的代码清单1 @Testpublic void test01() {String a = "a" + ...

  4. java中equals函数所在的类,重写Java中的equals方法介绍

    Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,long),2种浮点类型(flout, double),boolean, char不是对象,其他的所有类型, ...

  5. java 中equals和==的区别

    java9举例代码: 1 String str1 = "abc"; 2 String str2 = "abc"; 3 String str3 = new Str ...

  6. Java中equals()方法和==的区别分析

    Java中equals方法和==的区别分析 equals(Object obj)方法,将对象与传入的obj进行比较,相等返回true,否则返回false.equals方法和"==" ...

  7. 【Java】java中 ==,equals,hashcode

    ==运算符是判断两个对象是不是同一个对象,即他们的地址是否相等 object类中equals与==是等效的 覆写equals更多的是追求两个对象在逻辑上的相等,你可以说是值相等,也可说是内容相等.(覆 ...

  8. Java中equals()和“==”区别

    Java中equals()和"=="区别 1.对于基础数据类型,使用"=="比较值是否相等: 2.对于复合数据类型(类),使用equals()和"== ...

  9. java中equals,hashcode和==的区别

    原文地址http://blog.csdn.net/hla199106/article/details/46907725 1.== java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型 ...

  10. 关于java中equals与==的区别的小实验

    java中equals与==经常容易混淆,简单一点说就是equals比较的是值是否相等,是一种方法,==比较的两个对象在JVM中的地址,是一种操作符. 做了几个小实验比较结果. 实验一: String ...

最新文章

  1. #圆的周长和面积面向对象_数学实验 | 圆的面积公式推导
  2. 1过程流程图 3 apqp_为什么说APQP以最低成本及时提供优质的产品?
  3. java SSM 框架 多数据源 代码生成器 websocket即时通讯 shiro redis 后台框架源码
  4. 如何把a1的图纸变成a0_「云顶之弈装备解析」面对回蓝——青龙刀与大天使究竟该如何取舍...
  5. SAP Spartacus All Units页面里的按钮style和对应的scss实现
  6. [深度学习] Keras 如何使用fit和fit_generator
  7. 运维人,你应该了解的三张武功心法图(转载)
  8. libevent源码深度剖析三
  9. 业务逻辑全写在sql_12306的业务逻辑很复杂么?一条SQL语句搞不定?
  10. TensorFlow使用--MNIST分类学习(BP神经网络)
  11. c语言蛮力法实现背包问题
  12. H5跳转微信公众号解决方案
  13. Android 闹钟app 课程设计
  14. Linux安装jdk报错:package jdk-16.0.2-2000:16.0.2-ga.aarch64 is intended for a different architecture
  15. MySQL数据库有网络和无网络的部署
  16. php session header,php session header()重定向后丢失 - php
  17. ZZULIOJ:1099: 角谷猜想(多实例测试)
  18. 第二周-第07章节-Python3.5-列表的使用(1)
  19. springCloud 之 Hystrix 熔断器
  20. Flowable-6.6.0 工作流引擎(windows平台zip包)下载

热门文章

  1. Destination Host Unreachable问题记录
  2. Shell(7)——case
  3. html(1)基本组成
  4. K个一组翻转链表—leetcode25
  5. idea-jvm参数设置(有注释)
  6. K近邻法(KNN)原理小结
  7. java中ftp删除文件,Java 实现ftp 文件上传、下载和删除
  8. 简单的socket通信实现
  9. MySQL常用语句一、连接MySQL格式:mysql-h主机地址-u用户名-p用户密
  10. IDEA如何生成get和set方法