null許容数値をnull値を維持する文字列に変換したいと思います。これは私がしていることです:
int? i = null;
string s = i == null ? null : i.ToString();
もっと短いものはありますか?
null許容数値をnull値を維持する文字列に変換したいと思います。これは私がしていることです:
int? i = null;
string s = i == null ? null : i.ToString();
もっと短いものはありますか?
あなたはいくつかの拡張メソッドを書くことができます:
public static string ToNullString(this int? i)
{
return i.HasValue ? i.ToString() : null;
}
使用法はより簡単になります:
string s = i.ToNullString();
または一般的なバージョン:
public static string ToNullString<T>(this Nullable<T> value)
where T : struct
{
if (value == null)
return null;
return value.ToString();
}
そのための拡張メソッドを作成できます。
public static string ToStringOrNull<T>(this Nullable<T> nullable)
where T : struct {
return nullable.HasValue ? nullable.ToString() : null;
}
使用法:
var s = i.ToStringOrNull();
アップデート
C#6以降、はるかに便利なnull条件演算子を使用できます。
var s = i?.ToString();
おもう
string s = i?.ToString();
短いです。
System.Convertieを使用することもできます
int? i = null;
string s = Convert.ToString(i); // it gives null if i is null.
また、すでに述べたように、null条件演算子を使用することもできます
string s = i?.ToString();
10進タイプのformatProviderパラメーターが必要なので、以下のように10進拡張に特化するために汎用バージョンを削除しました。
public static string ToStringOrNull(this Nullable<decimal> nullable, string format = null)
{
string resTmp = "";
if (nullable.HasValue)
{
if (format != null)
{
resTmp = nullable.Value.ToString(format);
}
else
{
resTmp = nullable.ToString();
}
}
else
{
resTmp = "";
}
return resTmp;
}