Easier way of writing null or empty?

2019-01-20 07:53发布

问题:

I'm sure I've missed something here. With a certain project I need to check if a string is empty or null.

Is there an easier way of writing this?

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

回答1:

Yes, there's the String.IsNullOrEmpty helper method for exactly this already:

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


回答2:

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

Or you could take advantage of a quirk in extension methods, they allow this to be null:

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

which then lets you write:

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

Although you probably should pick another name than 'empty'.



回答3:

If you are on .NET 4, you can use

if(string.IsNullOrWhiteSpace(myString)){

}

else:

if(string.IsNullOrEmpty(myString)){

}


回答4:

To avoid null checks you can use ?? operator.

var result = value ?? "";

I often use it as guards to avoid sending in data that I don't want in methods.

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

It can also be used to avoid unwanted formatting.

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

This can also be used in if statements, it's not so nice but can be handy sometimes.

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


回答5:

// if the string is not defined to null then IsNullOrEmpty it works great but if string is defined null then trim will throw exception.

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

//you can use IsNullOrWhiteSpace which work well for multiple white space in string .i.e it return true for multiple white space also

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