?? Coalesce for empty string?
There isn't a built-in way to do this. You could make your extension method return a string or null, however, which would allow the coalescing operator to work. This would be odd, however, and I personally prefer your current approach.
Since you're already using an extension method, why not just make one that returns the value or a default:
string result = s.SiteNumber.ConvertNullOrEmptyTo("No Number");
C# already lets us substitute values for null
with ??
. So all we need is an extension that converts an empty string to null
, and then we use it like this:
s.SiteNumber.NullIfEmpty() ?? "No Number";
Extension class:
public static class StringExtensions
{
public static string NullIfEmpty(this string s)
{
return string.IsNullOrEmpty(s) ? null : s;
}
public static string NullIfWhiteSpace(this string s)
{
return string.IsNullOrWhiteSpace(s) ? null : s;
}
}
I know this is an old question - but I was looking for an answer and none of the above fit my need as well as what I ended up using:
private static string Coalesce(params string[] strings)
{
return strings.FirstOrDefault(s => !string.IsNullOrEmpty(s));
}
Usage:
string result = Coalesce(s.SiteNumber, s.AltSiteNumber, "No Number");
EDIT: An even more compact way of writing this function would be:
static string Coalesce(params string[] strings) => strings.FirstOrDefault(s => !string.IsNullOrEmpty(s));