更简单的写null或empty的方式

本文关键字:empty 方式 null 更简单 | 更新日期: 2023-09-27 18:10:25

我肯定我错过了什么。对于某个项目,我需要检查字符串是否为空或null。

有没有更简单的写法?

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

更简单的写null或empty的方式

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

if (String.IsNullOrEmpty(myString)) {
    ...
}
if (string.IsNullOrEmpty(myString)) {
  ...
}
或者你可以利用扩展方法中的一个特点,它们允许this为空:
static class Extensions {
    public static bool IsEmpty(this string s) {
        return string.IsNullOrEmpty(s);
    }
}

让你写:

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

尽管你可能应该选择一个比'empty'更合适的名字

如果你使用的是。net 4,你可以使用

if(string.IsNullOrWhiteSpace(myString)){
}

:

if(string.IsNullOrEmpty(myString)){
}

要避免null检查,您可以使用??运营商。

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 ""

//如果字符串没有定义为null,那么IsNullOrEmpty它工作得很好,但是如果字符串定义为null,那么trim将抛出异常。

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

//你可以使用IsNullOrWhiteSpace,它可以很好地处理字符串i中的多个空白。如果有多个空白也返回true

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