gpt4 book ai didi

c# - 为什么没有不带参数的 IsNullOrEmpty 重载方法?

转载 作者:太空狗 更新时间:2023-10-29 19:48:17 24 4
gpt4 key购买 nike

当试图确定一个字符串是否为 null 或空时,我通常已经有了该字符串。这就是为什么我希望像 String.IsNullOrEmpty() 这样的实用函数可以在没有参数的情况下工作:

String myString;
bool test=myString.IsNullOrEmpty();

但是,这不起作用,因为 IsNullOrEmpty 需要一个 String 参数。相反,我必须写:

String myString;
bool test=String.IsNullOrEmpty(myString);

为什么会这样?这似乎不必要地笨重。当然,我可以很容易地为此编写自己的扩展方法,但这似乎是一个非常明显的遗漏,所以我想知道是否有什么好的理由。我不敢相信这个函数的无参数重载刚刚被微软遗忘了。

最佳答案

如果字符串为 null,调用 IsNullOrEmpty() 将导致 NullReferenceException

 String test = null;

test.IsNullOrEmpty(); // Instance method causes NullReferenceException

现在我们有了扩展方法,我们可以用扩展方法来实现它并避免异常。但请始终记住,这仅适用于扩展方法只不过是静态方法的语法糖。

public static class StringExtension
{
public static Boolean IsNullOrEmpty(this String text)
{
return String.IsNullOrEmpty(text);
}
}

有了这个扩展方法,下面将永远不会抛出异常

 String test = null;

test.IsNullOrEmpty(); // Extension method causes no NullReferenceException

因为它只是语法糖。

 StringExtension.IsNullOrEmpty(test);

关于c# - 为什么没有不带参数的 IsNullOrEmpty 重载方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/786706/

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