首页  >  文章  >  后端开发  >  C# 对象比较

C# 对象比较

PHPz
PHPz原创
2024-09-03 15:03:50907浏览

C# 对象比较会表现出两个相似类型对象的大小写微妙相关性,并返回一个值来证明一个对象是否不完全、等于或比另一个对象更突出。 C# 有很多管理员,其中一些用于查看值。这是编程时一项非常基本的任务——检查至少两种品质如何相互识别。

语法:

Public int compare(object s, object p)

哪里,

S 和 p 是要比较的第一个和第二个对象。

它返回一个整数值,表示对象 s 和 p 的值。

如何在 C# 中比较对象?

现在我们看到一个关于 C# 中对象比较如何工作的示例。

示例#1

using System;
using System.Collections.Generic;
class Someone
{
public string Name { get; set; }
}
class Ex
{
static void Main()
{
var someone = new List<Someone> {
new Someone { Name = "Spandana Rao" } };
Console.WriteLine(
someone.Contains(
new Someone { Name = "Spandana Rao" }));
}
}

输出:

C# 对象比较

在上面的程序中,程序产生 false 输出。为了实现这一点,我们需要在不废除 Equals 技术或执行 IEquatable 的情况下进行排序。界面中,您放弃了对如何分析您的两个示例的权力,并承认 CLR 的默认关联系统。如果您的排序是引用类型(类),您将获得字符平衡,如果您的排序是价值类型(结构),您将获得尊重平衡。

当您查看引用类型的两个案例(例如我的第一个模型中的 Person 类型)时,CLR 会将引用与项目进行对比,以检查引用是否突出显示相似的文章。如果两个引用类型的引用集中于受监督堆栈上的相似项,则它们可能是等效的。如果引用是唯一的,那么对象就不等价——无论它们的字段是否无法区分。

C# 值相等是一个交替循环,但更容易理解。价值一致性采用价值排序的所有出现字段,并将它们考虑到单个请求中第二个示例的场合字段。我认为尊重平衡的运作方式与大多数设计师期望所有对应检查应有的方式相同。

每次您在引用类型上使用并行公平管理器 (==) 或等于技术时,您都会调用 Object。等同于所提到的场合。如果您希望提供一些奖励平衡,最明显的活动是取代 System.Object.Equals 并利用此技术来考虑两个事件的字段。这种方法不是类型安全的。由于 Equals 策略承认 Object 类型的争用,因此我们无法确保传递给此技术的事件是 Person。

这个界面的设计是为了帮助我们解决我们所面临的健康问题。显而易见,这个接口使我们能够特定地取代当前的 Equals 策略。由于我们有一个专门的等于策略,因此在我们这种类型的两次场合中进行的任何通信检查都将受到类型保护和无效安全。在 Equals 的默认取代执行中使用 as 强制转换允许我们传递 Person 或 invalid 的实例以及我们对 IEquatable 的使用。等于返回虚假,这保证​​了我们的策略不会因无效而失败。

GetHashCode 策略是人格股权检查的基本部分。哈希码是表示当前示例情况的基本值。本质上,如果两个案例具有相似的哈希码,则它们在尊重方面可能是相同的。然而,如果两篇文章没有相似的哈希码,那么它们的价值肯定不相等。如果哈希码不协调,这种方法允许我们通过不调用 Equals 来考虑代码和显示支持。关于为项目示例创建哈希码的适当或最理想的方法,这还需要再讨论一天。我们在这里所做的就是获取两个互质数(23 和 37),并利用它们来控制事件状态的哈希码,以显示最后一个基本值。再说一遍,现在用户如何工作并不重要,重要的是我们给予一些执行,这样我们就可以获得GetHashCode可以给予的展示奖励。目前我们有一个类可以适当地提供一些好处对应语义。

结论

因此,我想总结一下,因为基础 Object.等于技术被设置为虚拟的,您可以在从 Object 获取的任何类中取代它,这很好,一切。请注意这如何改变 p1.Equals(p3) 的结果,因为它目前查看的是姓名和年龄而不是引用。

以上是C# 对象比较的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
上一篇:C# URL Encode下一篇:nhibernate in C#