将可空数字转换为字符串

Clo*_*eto 6 c# type-conversion

我想将可空数字转换为保持空值的字符串.这就是我正在做的事情:

int? i = null;
string s = i == null ? null : i.ToString();
Run Code Online (Sandbox Code Playgroud)

有什么更短的吗?

Ser*_*kiy 8

你可以写一些扩展方法:

public static string ToNullString(this int? i)
{
   return i.HasValue ? i.ToString() : null;
}
Run Code Online (Sandbox Code Playgroud)

用法会更简单:

string s = i.ToNullString();
Run Code Online (Sandbox Code Playgroud)

或通用版本:

public static string ToNullString<T>(this Nullable<T> value)
    where T : struct
{
    if (value == null)
        return null;

    return value.ToString();
}
Run Code Online (Sandbox Code Playgroud)


Jor*_*dão 5

您可以为此创建一个扩展方法:

public static string ToStringOrNull<T>(this Nullable<T> nullable) 
where T : struct {
  return nullable.HasValue ? nullable.ToString() : null;
}
Run Code Online (Sandbox Code Playgroud)

用法:

var s = i.ToStringOrNull();
Run Code Online (Sandbox Code Playgroud)

更新

从 C# 6 开始,您可以使用更方便的null 条件运算符

var s = i?.ToString();
Run Code Online (Sandbox Code Playgroud)