C# では既に null
の値を代入できます ??
で .必要なのは、空の文字列を null
に変換する拡張機能だけです。 、そして次のように使用します:
s.SiteNumber.NullIfEmpty() ?? "No Number";
拡張クラス:
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;
}
}
これを行う組み込みの方法はありません。ただし、拡張メソッドが文字列または null を返すようにすることもできます。これにより、合体演算子が機能するようになります。しかし、これは奇妙で、私は個人的にあなたの現在のアプローチを好みます。
既に拡張メソッドを使用しているため、値またはデフォルトを返すメソッドを作成してみませんか?
string result = s.SiteNumber.ConvertNullOrEmptyTo("No Number");
私はこれが古い質問であることを知っています - しかし、私は答えを探していました.上記のどれも私のニーズと私が最終的に使用したものに適合しません:
private static string Coalesce(params string[] strings)
{
return strings.FirstOrDefault(s => !string.IsNullOrEmpty(s));
}
使い方:
string result = Coalesce(s.SiteNumber, s.AltSiteNumber, "No Number");
編集: この関数をさらに簡潔に記述する方法は次のとおりです。
static string Coalesce(params string[] strings) => strings.FirstOrDefault(s => !string.IsNullOrEmpty(s));