I've got a one line method that resolves a null string to string.Empty which I thought might be useful as an extension method - but I can't find a useful way of making it so.
The only way I could see it being useful is as a static method on the string class because obviously it can't be attributed to an instance as the instance is null and this causes a compiler error. [Edit: Compiler error was due to uninitialized variable, which I misinterpreted]
I thought about adding it to a helper class but that just adds unnecessary complexity from a discoverability standpoint.
So this question is in two parts I suppose:
Cheers in advance
Edit:
Okay, I guess I should've been a little more clear - I'm already well aware of null coallescing and I was using this in a place where I've got a dozen or so strings being inspected for calculation of a hash code.
As you can imagine, 12 lines of code closely following each other all containing the null coallescing syntax is an eyesore, so I moved the null coallescing operation out to a method to make things easier easier on the eyes. Which is perfect, however, it would be a perfect extension to the string object:
int hashcode =
FirstValue.ResolveNull().GetHashCode() ^
SecondValue.ResolveNull().GetHashCode() ^
...
over a dozen lines is a lot easier to read than:
int hashcode =
(FirstValue ?? String.Empty).GetHashCode() ^
(SecondValue ?? String.Empty).GetHashCode() ^
...
I was running into compiler problems when I didn't explicitly declare my string values as null but relied on the implicit:
string s;
If however, you explicitly define:
string s = null;
You can quite easily call:
s.ResolveNull();
Thanks all for your input.
I don't think there's anything built in for this. My first thought, and what I do often, is use the coalesce operator:
string s = null;
string x = s ?? string.Empty;
The only way I could see it being useful is as a static method on the string class because obviously it can't be attributed to an instance as the instance is null and this would cause a runtime error.
C# 3.0 extension methods can be called on null receivers (since they are static in practice), but behave as instance methods. So just make it an extension method.
someExpressionInvolving(s ?? "");
There is no point getting excited about string.Empty
vs ""
- there is negligible difference:
Console.WriteLine(ReferenceEquals(string.Empty, "")); // true
Extension method:
public static class StringExtensions
{
public static String EmptyIfNull(this String instance)
{
return instance ?? String.Empty;
}
}
of course, you can just as easily write instance ?? String.Empty
in places where you need to use String.Empty instead of null.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With