gpt4 book ai didi

c# - 重载 operator== 并与 null 进行比较

转载 作者:太空狗 更新时间:2023-10-29 23:58:28 26 4
gpt4 key购买 nike

我有一个重载 operator== 的类来比较两个对象,但是当我根据 null 检查该类型的对象时,我得到一个第一个参数的空引用异常。我想知道我应该如何防范这种情况,或者有另一种方法来实现这个 operator==

Card c;

if (c == null) { // do something } //null check throws exception cause c1 in operator has is a null object...

public static bool operator ==(Card c1, Card c2)
{
if (ReferenceEquals(c1, null) )
return false; // this does not make sense either I guess??
return c1.Equals(c2);
}

最佳答案

ReferenceEquals 检查应该这样做;实际上,厚颜无耻的路线可以是:

if(((object)c1) == ((object)c2)) return true;
if(((object)c1) == null || ((object)c2) == null) return false;
return c1.Equals(c2);

(object) 转换本质上是 NOP,只是强制它执行引用检查而不是递归地命中 ==,而且也没有额外的静态调用ReferenceEquals.

关于c# - 重载 operator== 并与 null 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5053347/

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