一、值类型的比较

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

            ;
            ;
            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 = );
            Person p2 = );
            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 类型是个特例,因为他的内部对这两个都进行了重写。

C#中Equals和==的比较的更多相关文章

  1. Java中equals与==和comparaTo的区别

    一.先说说Java中equals和==的区别: Java中的数据类型,可分为两类: 1.基本数据类型(也叫原始数据类型) 八大基本数据类型 char byte short int long doubl ...

  2. java中equals和==的区别 (转)

    java中equals和==的区别  值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中. ==操作比较的是两个变量的值是否相等,对于引 ...

  3. 【转】Java中equals和==的区别

    [转]Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boole ...

  4. C#中 Equals和= =的区别

    C#中 Equals和= =的区别 前言:最近感觉技术进步实在是太慢,一直被游戏缠身不能自拔哈哈,但是游戏打多了真的是感觉整个人浮躁的不行,所以我现在要去游戏多写代码多看书,今天在博客园中看到一个前辈 ...

  5. (转)Java中equals和==的区别

    java中的数据类型,可分为两类:  1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean    他们之间的比较,应用双等号( ...

  6. Java:验证在类继承过程中equals()、 hashcode()、toString()方法的使用

    以下通过实际例子对类创建过程汇中常用的equals().hashcode().toString()方法进行展示,三个方法的创建过程具有通用性,在项目中可直接改写. //通过超类Employee和其子类 ...

  7. java中equals相同,hashcode一定相同ma

    一.jdk中equals和hashcode的定义和源码进行分析 1.java.lang.Object中对equals()方法的定义 java.lang.Object中对hashCode()方法的定义 ...

  8. Java 中 Equals和==的区别(转)

    另外一篇参考: https://blog.csdn.net/striverli/article/details/52997927 在谈论equals和==的区别前,我们先简单介绍一下JVM中内存分配的 ...

  9. java中equals()和==的区别

    java中的数据类型 基础数据类型 基础数据类型有byte.short.char.int.long.float.double.bool.String.除了 String 会比较地址,其它的基础类型的比 ...

  10. C#中Equals和= =(等于号)的比较)

    C#中Equals和= =(等于号)的比较) 相信很多人都搞不清Equals和 = =的区别,只是零星的懂一点,现在就让我带大家来进行一些剖析 一.           值类型的比较 对于值类型来说  ...

随机推荐

  1. phpMyAdmin配置

    一: (1):下载phpmyadmin,在官方最好               (2):个人建议最好将其安装在apache的htdocs文件中(apache的默认虚拟目录,或web访问目录)      ...

  2. 流畅的python第十七章使用期物处理并发

    从 Python 3.4 起,标准库中有两个名为 Future 的类:concurrent.futures.Future 和asyncio.Future.这两个类的作用相同:两个 Future 类的实 ...

  3. mysql 5.7之后版本datatime 不允许设置 0000-00-00 00:00:00 的问题

    打开mysql.ini配置文件  在mysqld下 加入sql-model验证规则即可 sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FO ...

  4. 【笔记】关于jq $.ajax 函数 success回调函数不能赋正确值或返回正确值的问题

    最近在一个项目里面打算实现如下功能: 当我注册账号的时候当输入账号完毕后输入框失焦时执行一个 ajax 请求,验证账号是否被注册,并未这个输入框的 isCorrect属性赋值,如果没有被注册 isCo ...

  5. (转)dubbo design

    框架设计 整体设计 图例说明: 图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口, 位于中轴线上的为双方都用到的接口. 图中从下至上分为十层,各层均为单向依赖,右边的黑 ...

  6. vi 新建编辑文件时报错 E212 can’t open file for writing

    在vi修改防火墙配置时,不能够保存,报E212 can’t open file for writing错误. 网上大概给出了两种答案. 一是权限不够,可以用root权限事实,或者sudo 操作. 二是 ...

  7. 猫猫学iOS之UITextField右边设置图片,以及UITextField全解

    猫猫分享,必须精品 原创文章.欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 效果: 封装好的方法: 猫猫封装的一个小方法,简单共享出来,方便 ...

  8. PAAS云服务平台

    云计算是一种可以方便.按需从网络訪问的.可配置的.共享的资源池(如网络.server.存储.应用程序和服务)模型,且仅仅需最少的管理(服务提供方交互)就可以高速供应和公布该模型. 云计算平台的核心部分 ...

  9. jquery中动画特效方法

    基本特效 方法:                  说明 .show()              显示选中的元素 .hide()                隐藏选中的元素 .toggle()   ...

  10. Maven 多套环境配置

    在Java开发中会配置不同环境,可通过Maven的profile指定不同的环境配置,pom.xml配置如下: <project xmlns="http://maven.apache.o ...