gpt4 book ai didi

C#:涉及空引用时重载 == 运算符的最佳实践

转载 作者:太空狗 更新时间:2023-10-29 22:15:00 25 4
gpt4 key购买 nike

当涉及空引用比较时,重载比较同一类的两个实例的 == 运算符的最佳做法是什么?

MyObject o1 = null;
MyObject o2 = null;
if (o1 == o2) ...


static bool operator == (MyClass o1, MyClass o2)
{
// ooops! this way leads toward recursion with stackoverflow as the result
if (o1 == null && o2 == null)
return true;

// it works!
if (Equals(o1, null) && Equals(o2, null))
return true;

...
}

相比之下,处理空引用的最佳方法是什么?

最佳答案

我想知道是否存在“最佳方法”。以下是我的做法:

static bool operator == (MyClass o1, MyClass o2)
{
if(object.ReferenceEquals(o1, o2)) // This handles if they're both null
return true; // or if it's the same object

if(object.ReferenceEquals(o1, null))
return false;

if(object.ReferenceEquals(o2, null)) // Is this necessary? See Gabe's comment
return false;

return o1.Equals(o2);

}

关于C#:涉及空引用时重载 == 运算符的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4075760/

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