6

null許容数値をnull値を維持する文字列に変換したいと思います。これは私がしていることです:

int? i = null;
string s = i == null ? null : i.ToString();

もっと短いものはありますか?

4

5 に答える 5

8

あなたはいくつかの拡張メソッドを書くことができます:

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();
}
于 2012-07-13T14:16:17.907 に答える
5

そのための拡張メソッドを作成できます。

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();
于 2012-07-13T14:18:37.570 に答える
1

おもう

string s = i?.ToString();

短いです。

于 2017-12-15T15:14:45.950 に答える
0

System.Convertieを使用することもできます

int? i = null;
string s = Convert.ToString(i); // it gives null if i is null.

また、すでに述べたように、null条件演算子を使用することもできます

string s = i?.ToString();
于 2021-10-25T12:03:35.690 に答える
-1

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;
}
于 2017-12-15T15:07:57.530 に答える