繁体   English   中英

更简单的写空或空的方法?

[英]Easier way of writing null or empty?

我确定我在这里遗漏了一些东西。 对于某个项目,我需要检查字符串是否为空或 null。

有没有更简单的写法?

if(myString == "" || myString == null)
{
   ...

是的,已经有String.IsNullOrEmpty辅助方法了:

if (String.IsNullOrEmpty(myString)) {
    ...
}
if (string.IsNullOrEmpty(myString)) {
  ...
}

或者你可以利用扩展方法中的一个怪癖,它们允许为null:

static class Extensions {
    public static bool IsEmpty(this string s) {
        return string.IsNullOrEmpty(s);
    }
}

然后让你写:

if (myString.IsEmpty()) {
  ...
}

虽然您可能应该选择另一个名称而不是“空”。

为了避免空检查你可以使用?? 运营商。

var result = value ?? "";

我经常使用它作为警卫,以避免发送我不希望在方法中的数据。

JoinStrings(value1 ?? "", value2 ?? "")

它还可用于避免不必要的格式化。

string ToString()
{
    return "[" + (value1 ?? 0.0) + ", " + (value2 ?? 0.0) + "]";
}

这也可以在if语句中使用,它不是那么好但有时可以派上用场。

if (value ?? "" != "") // Not the best example.
{
}

在 c# 9 中,通过使用模式匹配,您可以执行以下操作

myString is not {Length: > 0}; // Equivalent to string.IsNullOrEmpty(myString)

C# 9 的模式匹配允许您编写:

myString is null or ""

如果您使用的是.NET 4,则可以使用

if(string.IsNullOrWhiteSpace(myString)){

}

其他:

if(string.IsNullOrEmpty(myString)){

}

//如果字符串未定义为null,则IsNullOrEmpty可以正常工作,但如果string定义为null,则trim将抛出异常。

if(string.IsNullOrEmpty(myString.Trim()){
 ...
}

//你可以使用IsNullOrWhiteSpace ,它可以很好地用于字符串中的多个空格.ie它也可以为多个空格返回true

 if(string.IsNullOrWhiteSpace (myString.Trim()){
     ...
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM