• c#如何判断两个对象是否相等


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

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

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

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

    复制代码
    People p1=new  People();
    
    People p2=p1;
    
    People p3;
    
    p3=p2;
    复制代码

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

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

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

    1
    2
    3
    4
    5
    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。具体实例就不演示了。

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


    感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接
  • 相关阅读:
    关于maven下载速度慢,下载完的依赖包不知去向的应对措施
    进一步解析二分搜索树的实现
    mysql语法建库建表综合整理是示例
    走进二分搜索树的第一课
    优先队列和堆
    window系统mysql安装后获取默认密码
    微信小程序中使用云开发获取openid
    使用IDEA将springboot框架导入的两种方法
    C/C++、Qt4实现FTP客户端(有无界面版)
    云服务器搭建代理服务器 —— 某sock ,简单说明
  • 原文地址:https://www.cnblogs.com/wangchaoyuana/p/7545159.html
Copyright © 2020-2023  润新知