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

2023-11-01

在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。具体实例就不演示了。

 

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

 

转载于:https://www.cnblogs.com/mingjiatang/p/3817271.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 在java程序中使用c++ Dll

    我正在尝试使用System LoadLibrary 使用我用 C 编写的一个简单的 dll UseDllInJava java import com sun jna Library import com sun jna Native imp
  • clang 格式换行符在错误的位置

    给出以下代码行 get abc manager get platform status abc platform status sw update status fill update status actions allowed stat
  • 分段错误(核心转储)错误

    我的程序编译罚款 但在输入文件时出现 分段错误 核心转储 错误 我没有正确处理 ostream 吗 include
  • 如何尝试/捕获所有异常

    我正在完成由其他人启动的 UWP 应用程序 该应用程序经常崩溃 我总是陷入困境应用程序 at if global System Diagnostics Debugger IsAttached global System Diagnostic
  • 在 C# Winforms 应用程序中嵌入 Windows XP 主题

    我有一个旧版 C Windows 窗体应用程序 其布局是根据 Windows XP 默认主题设计的 由于需要将其作为 Citrix 应用程序进行分发 该应用程序现在看起来像经典主题应用程序 因为 Citrix 不鼓励使用主题系统服务 所以
  • 从 C 结构生成 C# 结构

    我有几十个 C 结构 我需要在 C 中使用它们 典型的 C 结构如下所示 typedef struct UM EVENT ULONG32 Id ULONG32 Orgin ULONG32 OperationType ULONG32 Size
  • 如何使用MySqlCommand和prepare语句进行多行插入?(#C)

    Mysql 给出了如何使用准备语句和 NET 插入行的示例 http dev mysql com doc refman 5 5 en connector net programming prepared html http dev mysq
  • 将字符串转换为正确的 URI 格式?

    有没有简单的方法可以将电子邮件地址字符串转换为正确的 URI 格式 Input http mywebsite com validate email 3DE4ED727750215D957F8A1E4B117C38E7250C33 email
  • 将带有 glut 的点击坐标添加到向量链接列表中

    我想创建一个向量链接列表 并在 GLUT 库的帮助下获取点击的位置并将它们附加到链接列表中 这些是我写的结构 typedef struct vector int x int y Vector typedef struct VectorLis
  • 2D morton 码编码/解码 64 位

    如何将给定 x y 的莫顿代码 z 顺序 编码 解码为 32 位无符号整数 生成 64 位莫顿代码 反之亦然 我确实有 xy2d 和 d2xy 但仅适用于 16 位宽的坐标 产生 32 位莫顿数 在网上查了很多 但没有找到 请帮忙 如果您可
  • 如何随着分辨率的变化自动调整大小和调整表单控件

    我注意到某些应用程序会更改控件的位置以尽可能适应当前的分辨率 例如 如果窗口最大化 则控件的设置方式应使整个 GUI 看起来平衡 是否可以使用 C 在 Visual studio 2010 中制作或实现此功能 Use Dock http m
  • tabcontrol selectedindex 更改事件未被触发 C#

    嘿伙计们 我有一个很小的问题 请参阅下面的代码 this is main load private void Form1 Load object sender EventArgs e tabAddRemoveOperator Selecte
  • WPF。如何从另一个窗口隐藏/显示主窗口

    我有两个窗口 MainWindow 和 Login 显示登录的按钮位于主窗口 this Hide Login li new Login li Show 登录窗口上有一个检查密码的按钮 如果密码正确 我如何显示主窗口 将参数传递给 MainW
  • 0-1背包算法

    以下 0 1 背包问题是否可解 浮动 正值和 浮动 权重 可以是正数或负数 背包的 浮动 容量 gt 0 我平均有 这是一个相对简单的二进制程序 我建议用蛮力进行修剪 如果任何时候你超过了允许的重量 你不需要尝试其他物品的组合 你可以丢弃整
  • 初始化 LPCTSTR /LPCWSTR [重复]

    这个问题在这里已经有答案了 我很难理解并使其正常工作 基本上归结为我无法成功初始化这种类型的变量 它需要有说的内容7 2E25DC9D 0 USB003 有人可以解释 展示这种类型的正确初始化和类似的值吗 我已查看此站点上的所有帮助 将项目
  • 使用 iTextSharp 5.3.3 和 USB 令牌签署 PDF

    我是 iTextSharp 和 StackOverFlow 的新手 我正在尝试使用外部 USB 令牌在 C 中签署 PDF 我尝试使用从互联网上挖掘的以下代码 Org BouncyCastle X509 X509CertificatePar
  • 从 Delphi 调用 C# dll

    我用单一方法编写了 Net 3 5 dll 由Delphi exe调用 不幸的是它不起作用 步骤 1 使用以下代码创建 C 3 5 dll public class MyDllClass public static int MyDllMet
  • 使用 HTMLAgilityPack 从节点的子节点中选择所有

    我有以下代码用于获取 html 页面 将网址设置为绝对 然后将链接设置为 rel nofollow 并在新窗口 选项卡中打开 我的问题是关于将属性添加到 a s string url http www mysite com string s
  • 带有私有设置器的 EFCore Base 实体模型属性 - 迁移奇怪的行为

    实体模型继承的类内的私有设置器似乎会导致 EFCore 迁移出现奇怪的问题 考虑以下示例 其中有多个类 Bar and Baz 继承自Foo 跑步时Add Migration多次命令 添加 删除private修饰符 生成的模式在多个方面都是
  • 以 UTF8 而不是 UTF16 输出 DataTable XML

    我有一个 DataTable 我正在使用 WriteXML 创建一个 XML 文件 尽管我在以 UTF 16 编码导出它时遇到问题 并且似乎没有明显的方法来更改它 我了解 NET 在字符串内部使用 UTF 16 这是正确的吗 然后 我通过

随机推荐

  • 斐波那契数列(递归改进)

    题目 求斐波那契数列的第n项 写一个函数 输入n 求斐波那契数列的第n项 斐波那契数列的定义如下 大多数人看到后第一时间都会写出如下代码 递归 方法直观但时间效率低 long long Fibonacci unsigned int n if
  • 远程桌面连接不能复制粘贴怎么办 远程控制电脑无法复制粘贴的解决方法

    解决方法如下 第一步 打开远程桌面连接 点开电脑左下角的开始菜单 找到远程桌面连接 点开 如果你不常用远程桌面连接 那么这个图标就在附件里面 仔细找找就看到了 第二步 点开远程桌面连接的对话框 在对话框的左下角找到 显示选项 点开它 第三步
  • 数据加密标准(DES)概念及工作原理

    0x01 数据加密标准DES介绍 数据加密标准 Data Encryption Standard DES 是一种用于加密数字数据的对称密钥算法 密钥长度为56位 安全性不强 但它在密码学的进步中具有很大的影响力 0x02 数据加密标准历史
  • MySQL 锁

    文章目录 1 锁的种类 2 按兼容性划分 1 共享锁 2 排他锁 3 按锁粒度划分 1 表锁 2 行锁 3 注意 4 按锁模式划分 1 记录锁 2 间隙锁 3 临键锁 4 插入意向锁 5 意向锁 5 按加锁机制划分 1 悲观锁 2 乐观锁
  • 支付宝小程序集成mqtt兼容IOS和安卓

    1 前言 去年就想做支付宝小程序接入mqtt协议 但最终多方咨询 问客服问社区得到的答案都是支付宝小程序不能直接支持mqtt协议 偶然间发现徐宏大神的佳作 终于发现了xmqtt js这个好东西 它实现了支付宝小程序完美接入mqtt协议 设备
  • where、having、group by、order by、limit的区别和使用顺序

    where having group by order by limit的区别和使用顺序 姚文斌的博客 CSDN博客
  • 怎么让别人连接自己的数据库(MySQL)

    怎么让别人连接自己的数据库 MySQL update user set host where user root and host localhost flush privileges
  • 实现领域驱动设计----第一章

    带着问题上路 什么是领域驱动设计 是什么 为什么要做领域驱动设计 为什么要做 怎样做领域驱动设计 怎样做 其他的设计模式与领域驱动设计的区别 有类似为什么要做 但是是在取长补短的总结 译者序 就像在20世纪六七十年代出现了软件危机之后 面向
  • LINK : fatal error LNK1104: 无法打开文件“XXXXX.lib”解决方法

    1 首先我们一开始是配置包含的库目录 2 找到我们缺少XXXX lib对应的目录 确定 3 然后在链接器 输入 附加的依赖项中我们输入这个lib文件的全名 这一步按照实际情况添加 然后编译链接即可 主要原理分析 1 报错提示找不到这个lib
  • 玩转Mysql系列 - 第17篇:存储过程&自定义函数详解

    这是Mysql系列第17篇 环境 mysql5 7 25 cmd命令中进行演示 代码中被 包含的表示可选 符号分开的表示可选其一 需求背景介绍 线上程序有时候出现问题导致数据错误的时候 如果比较紧急 我们可以写一个存储来快速修复这块的数据
  • Ubuntu下的Nginx + Uwsgi + Django项目部署详细流程

    文章目录 前言 环境 工具 申请一个服务器 获取服务器实例 获取IP 配置安全组 配置放行端口 http www iszip com post 022714 html 连接服务器 配置用户 使用pyenv管理python版本 下载pyenv
  • sublime 搜索时忽略文件夹

    如上图 添加 folder exclude patterns 要忽略的文件夹 转载于 https www cnblogs com benchan2015 p 4949017 html
  • STM32------ADC实验

    目录 前言 一 库函数 1 ADC Init函数 2 ADC使能函数 3 ADC使能软件转换函数 4 ADC规则通道配置函数 5 ADC获取转换结果函数 6 实验目的 二 软件设计 1 adc c 2 adc h 前言 一 库函数 1 AD
  • react动态二级/三级路由操作

    一级路由就不写了 比较简单 下面是在一级页面mvvm中进行写入二级及三级路由页面 app js中进行路由配置
  • 【golang】巧用select {}阻塞main函数

    很多时候我们需要让main函数不退出 让它在后台一直执行 例如 func main for i 0 i lt 10 i 启动20个协程处理消息队列中的消息 c consumer New go c Start select 阻塞 可能大多数人
  • Leetcode304.二维区域和检索——动态规划之矩阵前缀和

    文章目录 引入 Leetcode题解 引入 接上文Leetcode10 正则表达式匹配 动态规划之一个模型三个特征 在第17次双周赛的时候 我遇到这么一道题1314 矩阵区域和 不过在此 我们先讨论该题的解法的经典题型 304 二维区域和检
  • k8s-kubeadm安装k8s

    前言 本文主要介绍Docker和Kubernetes的安装步骤 安装Docker采用官网提供的安装方式 安装k8s采用官网提供的kubeadm方式 其中镜像地址都采用了国内阿里镜像地址 k8s集群服务器初始化 准备工作 关闭防火墙 syst
  • 【C++】挖金子(黄金矿工)分析与代码实现

    帮 大一学弟 AC一道题 题面 思路 每个格子都可以作为开始节点 遍历找到最大数 可以直接用优先队列去模拟 或者用dfs 回溯 代码 include
  • python中yield总结

    总结 1 通常的for in 循环中 in后面是一个数组 这个数组就是一个可迭代对象 类似的还有链表 字符串 文件 它可以是mylist 1 2 3 也可以是mylist x x for x in range 3 它的缺陷是所有数据都在内存
  • c#如何判断两个对象是否相等

    在c 中判断对象相等 这是对引用类型进行判断 而不是对值类型 如果是对字符串 或者是数值进行判断相等只需要用 运算符就可以了 对两个对象用 运算符 只能判断他们两个在内存中的地址是否一样的 1 对一个类只实例化一次 向那些赋值来赋值去的引用