在c#中判断对象相等,这是对引用类型进行判断,而不是对值类型,如果是对字符串,或者是数值进行判断相等只需要用==运算符就可以了。

对两个对象用==运算符,只能判断他们两个在内存中的地址是否一样的。

 1.对一个类只实例化一次

向那些赋值来赋值去的引用如果没有new实例化一个对象的话,那么这些赋值来,赋值去的对象指向的都是同一地址。举一个例子有一个类People

People p1=new  People();

People p2=p1;

People p3;

p3=p2;

像这样对象p1 ,p2,p3 ,是完全指向的同一的内存地址,他们实际上是同一个对象,所有用==或者用equal方法判断都是返回true;

2、对一个类实例化多次但是每次实例的初值都是一样的

申明两个对象,每个对象都实例化一次,并且把每个类的数据即字段或者属性都是设置统一初始值,如下:

People p1=new People();
p1.Name="haha"; People p2 =new People();
p2.Name="haha";

假设People类是有一个属性就是Name,那么我将这p1,p2两个对象都实例化了,但是把用p1==p2得到的却是false,这就更加印证了对象用==运算符,只能是对对象名的引用地址进行比较,像这种,两次实例化,那么在内存空间中就分配了不一样的空间,即不同的地址,虽然他们内容中中的数据是一样。

注意:但是我们就是要比较对象在内存中的各个数据都要相等则是相等,而不是比较内存地址,该怎么办。

我们都知道如果两者的内存的地址都相等了,那么两个对象实质上是同一个对象,只是这两个对象在程序中拥有不同的名字而已,如果想比较不同对象是否相等(不是指地址相等)。就应该重写Object对象的Equal方法,在里面具体判断两个对象的各个数据是否相等,如果相等返回true,只要有一项不相等则返回false。具体实例就不演示了。

如果有说的不对的,或者不好的地方,希望各位能够指正。

c#如何判断两个对象是否相等的更多相关文章

  1. Java 判断两个对象是否相等

    一.使用 == 与 equals == : 它的作用是判断两个对象的地址是不是相等.即,判断两个对象是不是同一个对象.(基本数据类型==比较的是值,引用数据类型==比较的是内存地址) equals() ...

  2. Java基础(六)判断两个对象相等:equals、hashcode、toString方法

    1.equal方法 Object类中的equal方法用于检测一个对象是否等于另外一个对象.在Object类中,这个方法将判断两个对象是否具有相同的引用.如果两个对象具有相同的引用,它们一定是相等的.然 ...

  3. Java中如何判断两个对象是否相等(Java equals and ==)

    原文https://www.dutycode.com/post-140.html 如何判断两个对象相等,这个问题实际上可以看做是如何对equals方法和hashcode方法的理解. 从以下几个点来理解 ...

  4. JavaScript判断两个对象内容是否相等

    ES6中有一个方法判断两个对象是否相等,这个方法判断是两个对象引用地址是否一致 let obj1= { a: 1 } let obj2 = { a: 1 } console.log(Object.is ...

  5. 【java】【反射】反射实现判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更

    java的反射实现: 判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更 今日份代码: package com.sxd.streamTest; imp ...

  6. js 判断两个对象是否相等

    最近碰到的一个面试题,不算高频,记录一下 判断两个对象是否相等,大致分为三步 首先判断两个比较对象是不是 Object 如果都是对象 再比较 对象的长度是否相等 如果两个对象的长度相等 再比较对象属性 ...

  7. Java 中判断两个对象是否相等

    由于每次实例化一个对象时,系统会分配一块内存地址给这个对象,而系统默认是根据内存地址来检测是否是同一个对象,所以就算是同一个类里实例化出来的对象它们也不会相等. public class Transp ...

  8. JS深度判断两个对象字段相同

    代码: /** * 判断此对象是否是Object类型 * @param {Object} obj */ function isObject(obj){ return Object.prototype. ...

  9. javascript判断两个对象属性以及值是否相等

    objIsEqual(obj1,obj2){//比较两个对象键值对是否相等 var o1 = obj1 instanceof Object; var o2 = obj2 instanceof Obje ...

随机推荐

  1. poj3624 Charm Bracelet

    http://poj.org/problem?id=3624 题目大意:贝茜去了商场的珠宝店,发现了一个迷人的手镯.当然,她想装最好的魅力(N(1≤N≤3402)可用的魅力).每个魅力提供的列表中都有 ...

  2. Kafka运行环境优化实践

    Kafka高性能的特点及条件 Kafka是一个高吞吐量分布式消息中间件,并且提供了消息的持久化功能.其高可行有两个重要的特点: 利用了磁盘连续读写性能显著高于随机读写性能的特点 并发,将一个topic ...

  3. [小tips]使用vscode,根据vue模板文件生成代码

    本着苍蝇虽小也是肉的精神...... 目标: 我们希望每次新建.vue文件后,VSCODE能够根据配置,自动生成我们想要的内容. 方法: 打开VSCODE编辑器,依次选择"文件 -> ...

  4. NSTimer、performSelector 函数没有被调用的原因

    performSelector 指定的方法没有被调用 Invokes a method of the receiver on the current thread using the default ...

  5. ANR触发原理(what triggers ANR?)

    Ref: http://developer.android.com/training/articles/perf-anr.html http://stackoverflow.com/questions ...

  6. 剑指offer四十九之把字符串转换成整数

    一.题目 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 二.思路 详见代码. 三.代码 public class Solution { ...

  7. Eclipse+jboss5 无法启动

    在使用Eclipse luna 配置Jboss5 时,配置成功,但无法在eclipse 控制台上启动. log: Deployment "AttachmentStore" is i ...

  8. FoxitReader软件下载并安装(图文详解)

    不多说,直接上干货! FoxitReader官方网址:https://www.foxitsoftware.com/downloads/ 结束 欢迎大家,加入我的微信公众号:大数据躺过的坑        ...

  9. Adobe CC Family 2015 Master 或 Adobe CC Family 2017 Master的安装步骤(图文详解)

    不多说,直接上干货!   你还在为安装PS烦恼吗?你还在为制作视频软件寻找烦恼吗?..... 前言 现在,已经出来了 简单了解, Adobe Acrobat的百度百科: http://baike.ba ...

  10. Chapter 3 Phenomenon——7

    "Bella? Are you all right?" “贝拉?你还好吗?” "I'm fine." My voice sounded strange. “我还 ...