c# ==操作符和equals方法的区别

在C#中,"=="操作符和Equals()方法有着不同的用途和行为。

"=="操作符:

  1. "“操作符用于比较两个对象的值是否相等。当使用”"操作符比较两个引用类型的对象时,它会比较它们的引用是否指向相同的内存地址。
  2. 对于值类型(如int、double等),"=="操作符比较它们的实际值。如果值相等,则返回true,否则返回false。

Equals()方法:

  1. Equals()方法是一个虚拟方法,定义在System.Object类中,因此所有的类都可以使用它。
  2. 在默认情况下,Equals()方法的行为与"=="操作符相同,即它用于比较两个对象的值是否相等。
  3. 但是,类可以重写Equals()方法以改变其行为。重写Equals()方法通常用于自定义类来定义自定义的相等性比较规则。

总结:

  • "=="操作符用于比较引用类型的对象的引用或值类型的实际值。
  • Equals()方法用于比较对象的值是否相等,且可以被重写以自定义相等性比较规则。

因此,一般情况下,对于引用类型,应该使用"=="操作符来比较对象的引用,而对于值类型或者自定义类,应该使用Equals()方法来比较它们的值。

重写equals方法只要两个对象的字段的值相等就相等不比较对象的引用地址
没重写前,两个对象虽然字段的值相同,但是为两个不同的对象,引用地址不同,结果为不相等。

public class stu{
public int id;
public string name;
}
internal class Program
{private static void Main(string[] args){Console.WriteLine("c#equals和==的区别");// int c = 1;sstu a = new stu() { id = 1,name = "pzx" };stu b = new stu(){id = 1,name = "pzx"};if (a.Equals(b)){Console.WriteLine("a等于b");}else{Console.WriteLine("a不等于b");}}
}

重写后(值判断,不比较引用地址)输出相等

 internal class stu{public int id;public string name;/// <summary>/// 重写equal方法/// </summary>/// <param name="stu"></param>/// <returns></returns>public override bool Equals(object? obj){if (obj == null) return false;stu stu1 = (stu)obj;Type type = obj.GetType();var property = type.GetFields();foreach (var prop in property){if (prop.GetValue(this).Equals(prop.GetValue(stu1))){return true;}}return false;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/614465.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Kafka-3.x-教程】-【五】Kafka-监控-Eagle

【Kafka-3.x-教程】专栏&#xff1a; 【Kafka-3.x-教程】-【一】Kafka 概述、Kafka 快速入门 【Kafka-3.x-教程】-【二】Kafka-生产者-Producer 【Kafka-3.x-教程】-【三】Kafka-Broker、Kafka-Kraft 【Kafka-3.x-教程】-【四】Kafka-消费者-Consumer 【Kafka-3.x-教程】-【五…

React之自定义路由组件

开篇 react router功能很强大&#xff0c;可以根据路径配置对应容器组件。做到组件的局部刷新&#xff0c;接下来我会基于react实现一个简单的路由组件。 代码 自定义路由组件 import {useEffect, useState} from "react"; import React from react // 路由配置 e…

机器人领域顶刊TRO,TASE及RAL的区别与关系

一、背景 机器人领域越来越火&#xff0c;特别是具身智能的加持&#xff0c;让机器人在不久的未来可以完成更多复杂的任务&#xff0c;进入到我们的生活&#xff08;不过应该还需要很长时间&#xff09;。作为机器人方向的研究僧&#xff0c;我们会看到许多机器人期刊&#xf…

Semaphore信号量详解

在Java并发编程中&#xff0c;Semaphore是一个非常重要的工具类。它位于java.util.concurrent包中&#xff0c;为我们提供了一种限制对临界资源的访问的机制。你可以将其视为一个同步控制的瑞士军刀&#xff0c;因为它既能够控制对资源的并发访问数量&#xff0c;也能够保证资源…

2000-2021年全国各省环境相关指标数据(890+指标)

2000-2021年全国各省环境相关指标数据&#xff08;890指标&#xff09; 1、指标时间&#xff1a;2000-2021年 2、范围&#xff1a;31省市 3、来源&#xff1a;2001-2022年环境统计年鉴 4、指标&#xff1a;工业废水排放总量、工业废水排放达标量、工业废水处理量、化学需氧…

C语言代码 转换ASCII码为对应字符

转换以下ASCII码为对应字符并输出它们&#xff0c; 73,32,99,97,110,32,100,111,32,105,116,33 代码示例&#xff1a; #include <stdio.h>int main() {int arr[] { 73,32,99,97,110,32,100,111,32,105,116,33 };int i 0;int sz sizeof(arr) / sizeof(arr[0]);whil…

【野火i.MX6ULL开发板】开发板连接网络(WiFi)与 SSH 登录、上电自动登录、设置静态IP、板子默认参数

0、前言 参考之前自己写的&#xff1a; http://t.csdnimg.cn/g60P8 参考资料&#xff1a; [野火]《Linux基础与应用开发实战指南——基于i.MX6ULL开发板》_20230323 从野火官网下载 参考博客&#xff1a; http://t.csdnimg.cn/8uh4O 参考官方文档&#xff1a; https://doc.…

java 将json数据转为model

将json数据转为自己的实体model 要转化&#xff0c;首先要明白自己拿到的json是什么格式&#xff0c;想要转换为什么格式 json中 map&#xff08;以{}包着&#xff09;就是一个对象&#xff0c;list&#xff08;以[]包着&#xff09;就是一个数组 看清楚自己的json数据结构是否…

C++力扣题目257--二叉树的所有路径

给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,5] 输出&#xff1a;["1->2->5","1->3"]示例 …

Redis:原理速成+项目实战——Redis实战10(Redis消息队列实现异步秒杀)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理速成项目实战——Redis实战9&#xff08;秒杀优化&#xff09; &#x1f4da;订阅专栏&#xff1a;Redis&…

Eureka切换Nacos时发现两个注册中心的解决方法

报错信息如下&#xff0c;意思是发现了两个注册中心 Field autoServiceRegistration in org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration required a single bean, but 2 were found: - nacosAutoServiceRegistration: defined…

数学经典教材有什么?

有本书叫做《自然哲学的数学原理》&#xff0c;是牛顿写的&#xff0c;读完之后你就会感叹牛顿的厉害之处! 原文完整版PDF&#xff1a;https://pan.quark.cn/s/5d5eac2e56af 那玩意真的是人写出来的么… 现代教材把牛顿力学简化成三定律&#xff0c;当然觉得很简单。只有读了原…

【高等数学之不定积分】

一、什么是不定积分? 我们可以简单地从英文层面来基础剖析一下&#xff0c;什么是不定积分? 1.1、基本概念 小tips: 二、不定积分运算法则 三、常用积分公式 四、第一类换元积分法 4.1、定义 4.2、常用凑微分公式 4.3、小calculate 五、第二类换元积分法 5.1、定义 …

JQuery异步加载表格选择记录

JQuery异步加载表格选择记录 JQuery操作表格 首先在页面中定义一个表格对象 <table id"insts" class"table"><thead><tr><th>列1</th><th>列2</th><th>例3</th><th></th></tr>…

Doris 数据模型—Duplicate 模型

Doris 数据模型—Duplicate 模型 文章目录 Doris 数据模型—Duplicate 模型有排序的 Duplicate 模型无排序列 Duplicate 模型总结这是我们关于Doris 数据模型 的最后一节,也就是说到这里我们关于Doris 数据模型介绍就完了,其实Duplicate 模型模型的主要业务场景就是业务上数据…

vue-计算属性

介绍&#xff1a; 在JavaScript中&#xff0c;计算属性&#xff08;Computed Property&#xff09;是一种特殊类型的属性&#xff0c;其值是根据其他属性的值动态计算出来的。计算属性的名称通常以方括号 [] 包围&#xff0c;并且它们的值是根据一个或多个其他属性的值计算得出…

java常见面试题:如何使用Java进行文件操作?

在Java中&#xff0c;你可以使用java.io包中的类来进行文件操作。下面是一些常见的文件操作&#xff0c;我会详细解释并提供相应的示例代码。 读取文件 使用java.io.FileReader和java.io.BufferedReader来读取文本文件。 java复制代码 import java.io.BufferedReader; impor…

CodeParrot数据集

CodeParrot 是一个用于研究和开发自然语言编程接口的数据集。这个数据集包含了大量的编程任务以及与之对应的自然语言描述&#xff0c;这些描述可以被用来训练和评估自然语言理解&#xff08;NLU&#xff09;和代码生成模型。CodeParrot 数据集的目标是促进研究者在自然语言编程…

基于51单片机的万年历系统设计

标题&#xff1a;基于单片机的万年历系统设计与实现 摘要&#xff1a; 本文主要研究和实现了基于51系列单片机&#xff08;如AT89S51&#xff09;为核心的电子万年历系统的设计方案。系统通过集成DS1302时钟芯片作为实时时间基准&#xff0c;结合液晶显示模块、按键输入模块及…

国际化翻译系统V2正式上线了

1、前言 之前上线了移动端国际化翻译系统V1版本&#xff0c;其中有一些弊端&#xff0c;例如&#xff1a; 1、项目仅能适用于Android和iOS项目&#xff0c;针对前端项目&#xff0c;Flutter项目&#xff0c;和后端项目无法支持2、之前的桌面程序需要搭建本地java环境才能运行…