gpt4 book ai didi

c# - 关于检查空值的问题

转载 作者:行者123 更新时间:2023-11-30 13:10:06 26 4
gpt4 key购买 nike

我刚刚和我的一位同事就检查空值展开了辩论。

他发誓“在某些情况下”下面的代码会给他一个空值异常:

string test = null;
if(test == null) //error here
{

}

但是如果把代码改成这样就不会出错了:

string test = null;
if(null == test) //NO error here
{

}

我告诉他这不可能发生,但他发誓这修复了他的代码。是否存在上述更改可以修复错误的任何可能情况?

最佳答案

不是字符串,不。不过,您可以使用写得不好的 == 重载来做到这一点:

using System;

public class NaughtyType
{
public override int GetHashCode()
{
return 0;
}

public override bool Equals(object other)
{
return true;
}

public static bool operator ==(NaughtyType first, NaughtyType second)
{
return first.Equals(second);
}

public static bool operator !=(NaughtyType first, NaughtyType second)
{
return !first.Equals(second);
}
}

public class Test
{
static void Main()
{
NaughtyType nt = null;
if (nt == null)
{
Console.WriteLine("Hmm...");
}
}
}

当然,如果您将相等运算符更改为:

public static bool operator ==(NaughtyType first, NaughtyType second)
{
return second.Equals(first);
}

那么你同事的代码会失败,但你的不会!基本上,如果您正确地重载运算符 - 或者使用不重载运算符的类型 - 这不是问题。如果您的同事一直声称他遇到过它,请让他重现它。他当然不应该根据他无法证明的事情要求您降低可读性(我相信大多数人会发现第一种形式更具可读性)。

关于c# - 关于检查空值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3417965/

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