开发者_Go百科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)
{
...
Yes, there's the String.IsNullOrEmpty
helper method for exactly this already:
if (String.IsNullOrEmpty(myString)) {
...
}
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'.
If you are on .NET 4, you can use
if(string.IsNullOrWhiteSpace(myString)){
}
else:
if(string.IsNullOrEmpty(myString)){
}
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.
{
}
In c# 9 by using pattern matching you could do the following
myString is not {Length: > 0}; // Equivalent to string.IsNullOrEmpty(myString)
C# 9's pattern matching allows you to write:
myString is null or ""
// 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()){
...
}
精彩评论