gpt4 book ai didi

C#:static object.Equals 如何检查是否相等?

转载 作者:IT王子 更新时间:2023-10-29 04:33:33 25 4
gpt4 key购买 nike

假设您有两个不同的类,每个类都有自己的 Equals 实现;使用哪一个?如果只有其中一个有一个怎么办?还是一个都没有?以下任何行是否等效?

object .Equals( first, second )
first .Equals( second )
second .Equals( first )

我猜前两个可能是等价的,但我真的不知道。

它到底有什么作用?

最佳答案

基本上它做了三件事:

  • 检查引用是否相等(如果是则返回真)
  • 检查引用是否为空(如果任一值为 null 则返回 false;此时 null == null 的情况已经处理完毕)
  • 使用 first.Equals(second) 检查值是否相等

如果两个值都具有行为良好的相等实现,则顺序不应该很重要,因为应该实现相等,这样 x.Equals(y) 意味着 y.等于(x)。但是,我安装的离线文档确实说明了 first.Equals(second)(或 objA.equals(objB) 使用实际参数命名)。 online documentation有趣的是,没有提到这一点。

为了使所有这些具体化,实现可能如下所示:

public static bool Equals(object x, object y)
{
if (x == y) // Reference equality only; overloaded operators are ignored
{
return true;
}
if (x == null || y == null) // Again, reference checks
{
return false;
}
return x.Equals(y); // Safe as we know x != null.
}

关于C#:static object.Equals 如何检查是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1451454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com