c#如何判断两个对象是否相等
在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#如何判断两个对象是否相等的更多相关文章
- Java 判断两个对象是否相等
一.使用 == 与 equals == : 它的作用是判断两个对象的地址是不是相等.即,判断两个对象是不是同一个对象.(基本数据类型==比较的是值,引用数据类型==比较的是内存地址) equals() ...
- Java基础(六)判断两个对象相等:equals、hashcode、toString方法
1.equal方法 Object类中的equal方法用于检测一个对象是否等于另外一个对象.在Object类中,这个方法将判断两个对象是否具有相同的引用.如果两个对象具有相同的引用,它们一定是相等的.然 ...
- Java中如何判断两个对象是否相等(Java equals and ==)
原文https://www.dutycode.com/post-140.html 如何判断两个对象相等,这个问题实际上可以看做是如何对equals方法和hashcode方法的理解. 从以下几个点来理解 ...
- JavaScript判断两个对象内容是否相等
ES6中有一个方法判断两个对象是否相等,这个方法判断是两个对象引用地址是否一致 let obj1= { a: 1 } let obj2 = { a: 1 } console.log(Object.is ...
- 【java】【反射】反射实现判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更
java的反射实现: 判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更 今日份代码: package com.sxd.streamTest; imp ...
- js 判断两个对象是否相等
最近碰到的一个面试题,不算高频,记录一下 判断两个对象是否相等,大致分为三步 首先判断两个比较对象是不是 Object 如果都是对象 再比较 对象的长度是否相等 如果两个对象的长度相等 再比较对象属性 ...
- Java 中判断两个对象是否相等
由于每次实例化一个对象时,系统会分配一块内存地址给这个对象,而系统默认是根据内存地址来检测是否是同一个对象,所以就算是同一个类里实例化出来的对象它们也不会相等. public class Transp ...
- JS深度判断两个对象字段相同
代码: /** * 判断此对象是否是Object类型 * @param {Object} obj */ function isObject(obj){ return Object.prototype. ...
- javascript判断两个对象属性以及值是否相等
objIsEqual(obj1,obj2){//比较两个对象键值对是否相等 var o1 = obj1 instanceof Object; var o2 = obj2 instanceof Obje ...
随机推荐
- 比特、字节、K
比特(bit) 比特,计算机专业术语,是信息量单位,由英文BIT音译而来.BIT为Binary digit(二进制数)位的缩写.二进制数的一位所包含的信息就是一比特,如二进制数0100就是4比特. 字 ...
- Java并发工具类之并发数控制神器Semaphore
Semaphore(信号量)使用来控制通知访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源. 我们可以这么理解Semaphore,比如一个厕所只有6个坑,同时只能满足6个人上厕所( ...
- java解压缩.gz .zip .tar.gz等格式的压缩包方法总结
1..gz文件是linux下常见的压缩格式.使用 java.util.zip.GZIPInputStream即可,压缩是 java.util.zip.GZIPOutputStream public s ...
- js 保留字符串中的关键字前后两个字符其他内容用省略号显示
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Found an unexpected Mach-O header code: 0x72613c21
在按照第三方sdk文档中的Emedded Binaries 中加入了他们的framework,在删除这下面的对应的framework后,问题就得到了解决 发下有个英文的页面也是涉及这个问题的, 描述的 ...
- 添加新内容的四个 jQuery 方法:append,prepend,after,before
添加新内容的四个 jQuery 方法区别如下: append() - 在被选元素(里面)的结尾插入内容prepend() - 在被选元素(里面)的开头插入内容 //jQuery append() 方法 ...
- 7.xamarin.android 发布签名与控制apk大小
概述 做了xamarin android 后大家想打包一个apk,发布给其他人使用本章我们将带领大家如何打包签名一个apk. 打包 对于VS2017 或者是VS MAC来说打包一个APK非常简单. 首 ...
- (转)Python中集合(set)的基本操作以及一些常见的用法
原文:http://blog.51cto.com/10616534/1944841 Python除了List.Tuple.Dict等常用数据类型外,还有一种数据类型叫做集合(set),集合的最大特点是 ...
- springBoot上传文件时MultipartFile报空问题解决方法
springBoot上传文件时MultipartFile报空问题解决方法 1.问题描述: 之前用spring MVC,转成spring boot之后发现上传不能用.网上参考说是spring boot已 ...
- Eclipse-查看jar源码乱码问题解决
步骤1: 在eclipse菜单栏中,Window–>Preferences–>General–>Content types,将JAR Content , Java Class Fil ...