`

[原创]c#中的几个相等

阅读更多

今天学到了c#中的几个相等,我来和大家一起学习一下。

相等大概有下面四种,如下:

public static bool ReferenceEquals( object left, object right );

public static bool Equals ( object left, object right );

public virtual bool Equals( object right);

public static bool operator==( MyClass left, MyClass right );

第一和第二是不提倡重写的。

//这是Equalss的用法

public static bool Equals( object left, object right )

{

// 检查是否引用相等。

if (left == right )

return true;

if ((left == null) || (right == null))

return false;

return left.Equals (right);

}

下面是重写之后的Equals

public override bool Equals( object right )

{

// 检查是否为null:

// 在C#方法中,this指针永远都不可能为null。

if (right == null)

return false;

if (object.ReferenceEquals( this, right ))

return true;

// 下面将对此进行讨论。

if (this.GetType() != right.GetType())

return false;

// 比较两个实例的内容:

return CompareFooMembers(

this, right as Foo );

}

下面的一段话是我摘抄别人的,因为我写不好,怕误导了大家。大家共同学习吧

C#为我们提供了4种“相等判断”的方式,但是我们只需要考虑为其中两种提供自己的定义。我们永远都不应该重写Object.ReferenceEquals()静态方法和Object.Equals()静态方法[20],因为它们已经提供了正确的判断,且该判断与具体的运行时类型无关。对于值类型,我们应该总是重写Object.Equals()实例方法和operator==(),从而为它们提供效率较好的“相等判断”。对于引用类型,当我们认为相等的含义并非是对象标识相同时,才需要重写Object.Equals()实例方法。

分享到:
评论

相关推荐

    C#如何判断两个文件是否完全相等

    在C#编程语言中,实现这一功能可以通过多种方法来完成,但本文将深入探讨一种直接且有效的方法:通过逐字节比较两个文件的所有内容来判断它们是否完全相等。 ### C#中判断两个文件是否完全相等 #### 方法原理 两...

    文章伪原创处理工具C#源码

    标题 "文章伪原创处理工具C#源码" 涉及到的是一个使用C#编程语言编写的软件工具,其核心功能是进行文章内容的伪原创处理。在SEO(搜索引擎优化)领域,伪原创工具是一种常见的方式,用来生成与原文意思相近但文字...

    C# - 实现自定义相等比较器

    在这个例子中:我们有一个Person带有Id属性和Name属性的类。Person我们创建一个代表人员集合的对象列表。IdEqualityComparer我们实现了一个实现该接口的自定义相等比较器类IEqualityComparer。自定义相等比较器中的...

    C# 中英文转换

    本文将深入探讨如何在C#环境中实现这一功能,并提供一个实际的案例。 首先,我们需要理解的是,中英文转换主要涉及字符编码的问题。在计算机中,中文字符通常使用Unicode编码,如UTF-8或GBK,而英文字符则使用ASCII...

    C#查找列表中所有重复出现元素的方法

    本篇文章将深入探讨如何在C#中查找列表中的所有重复元素,并提供一个具体的实现示例。 首先,我们需要了解C#中的列表类型`List<T>`。`List<T>`是.NET框架提供的一个泛型类,它实现了`IList<T>`、`ICollection<T>`和...

    C#基础教程C# C# C# C#

    在学习C#的过程中,你需要掌握以下几个关键知识点: 1. **基本语法**:C#的语法结构与C++和Java相似,包括变量声明、数据类型(如int、string、bool等)、运算符、控制流(if-else、switch-case、for、while等)和...

    C#实现文件比较的功能,比较两个文件内容是否相同

    在C#编程中,文件比较是一项常见的任务,用于检测两个文件的内容是否一致。这在很多场景下都很有用,比如版本控制、数据验证或者备份检查等。下面我们将详细探讨如何使用C#来实现这个功能。 首先,我们需要理解文件...

    .NET如何快速比较两个byte数组是否相等.doc

    在 .NET 中快速比较两个 byte 数组是否完全相等是一个常见的问题,但实际上有多种解决方案。为了评测不同方案的性能,我们使用了 Benchmark 库,该库可以方便地评测方法执行的性能,支持几乎所有的 .NET 运行环境,...

    C#实现软件加壳

    在C#中实现软件加壳并非易事,因为C#编译后的代码是.NET的MSIL(中间语言),相对于汇编语言,更容易被反编译工具解析。然而,通过一些策略和第三方工具,我们可以实现C#软件的加壳,以提高其安全性。以下将详细探讨...

    c#操作多个摄像头

    在C#编程环境中,操作摄像头是一项常见的任务,尤其在开发监控系统、视频会议软件或图像处理应用时。本文将深入探讨如何使用C#来控制单个及多个摄像头,重点介绍两种主要的方法:AForge.NET框架和Windows API。 ...

    C#中实现一个TreeGridView(树形表格)示例代码.zip

    在这个压缩包文件`TreeGridViewTestOnly`中,应该包含了实现上述功能的源代码示例,你可以下载并运行,以便更好地理解`TreeGridView`在C#中的应用。通过学习和理解这段代码,你将能够熟练地在自己的项目中运用`...

    自己写的原创 C#空挡接龙

    自己写的C#空挡接龙包含代码,在网上找了很久没发现有C#写的空挡接龙 索性自己写了一个 ,还是没有参照别的写的,花了好几天的时间才完成 另附 有源代码下载 要资源分的

    原创c#串口调试助手 支持中文字符编码 源程序代码

    【标题】中的“原创c#串口调试助手 支持中文字符编码 源程序代码”揭示了这个项目的核心内容。这是一个使用C#编程语言开发的串口调试工具,其特点是能够正确处理中文字符编码,这在处理中文数据时非常重要。串口通信...

    c# ToolTip 几十种效果 集合了各种ToolTip 效果 很难得哦 源码

    【标题】中的“c# ToolTip 几十种效果”是指使用C#编程语言实现的ToolTip控件的各种显示效果集合。ToolTip控件是Windows Forms或WPF应用中常见的一种组件,它通常用于在鼠标悬停在某个控件上时显示额外的信息。这个...

    C# 颜色枚举对照表

    "C# 颜色枚举对照表" 主题主要围绕以下几个知识点展开: 1. **颜色枚举**:`Color` 枚举是 C# 中的一个枚举类型,它包含了大量预定义的颜色,如 `Red`, `Green`, `Blue` 等。这些颜色名称对应于特定的 ARGB(Alpha,...

    c# ocr 识别图片中的文字(包含中文)

    在C#编程环境中,开发人员可以利用OCR库来实现对图像中文字的识别,包括中文字符。以下是对这个主题的详细阐述: 1. OCR技术基础: - OCR的基本工作流程包括图像预处理、字符分割、特征提取和字符识别。预处理是...

    一个 C# 做的日记本

    【标题】"一个 C# 做的日记本"揭示了这个项目是使用C#编程语言开发的一个应用程序,主要用于创建和管理个人日记。C#是一种面向对象的、现代的编程语言,由微软公司开发,广泛应用于Windows平台上的软件开发,包括...

    C#检测两个矩阵是否相等的方法

    本文实例讲述了C#检测两个矩阵是否相等的方法。分享给大家供大家参考。具体分析如下: 该方法并不检测矩阵中没一个单元格的值是否相等,因为其类型是double,只是检测单元格的值是否接近,double也不能判断相等。 ...

    C# 的金额判断函数,可以判断千分位

    C# 的金额判断函数,可以判断千分位 C# 的金额判断函数,可以判断千分位 C# 的金额判断函数,可以判断千分位 C# 的金额判断函数,可以判断千分位 C# 的金额判断函数,可以判断千分位 C# 的金额判断函数,可以判断...

    C#一个窗体对应多个.cs源代码文件

    作C#桌面程序时,有时我们会遇到很复杂的功能,如果所有功能的实现都写在一个.cs文件中,会让这个.cs文件显得很臃肿,而且不便于以后管理。本程序提供一种方法,可以将不同功能分写在不同的.cs文件文件中。即能将很...

Global site tag (gtag.js) - Google Analytics