【问题标题】:How to convert nullable int to string如何将可为空的int转换为字符串
【发布时间】:2014-03-02 03:15:39
【问题描述】:

我需要将可为空的 int 转换为字符串

int? a = null;
string str = a.ToString();

我如何才能毫无例外地执行此操作? 我需要将字符串设为“Null”。 请指导我。

【问题讨论】:

标签: c#


【解决方案1】:

最短的答案是:

int? a = null;
string aString = a?.ToString() ?? "null";

【讨论】:

    【解决方案2】:
    if(a.HasValue())
    {
       return a.Value().ToString();
    }
    return string.Empty;
    

    【讨论】:

      【解决方案3】:

      您可以简单地使用Convert.ToString(),它也可以处理空值并且不会引发异常

      string str = Convert.ToString(a)
      

      或者使用if条件

      if(a.HasValue)
      {
        string str = a.Value.ToString();
      }
      

      或者使用?三元运算符

      string str = a.HasValue ? a.Value.ToString() : string.Empty;
      

      【讨论】:

      • 那么Convert 是如何处理null 的?它是否按照 OP 的要求返回“null”?
      • 这个答案解释了如何处理 null 值的异常。一旦你处理了它,你就可以把你的逻辑从上面提到的任何选项中获取任何值(例如“Null”。
      • 为了更清楚,Convert.ToString(a) 返回 "" 而不是 null
      【解决方案4】:

      如果anull,你真的需要字符串为“Null”:

      string str = a.HasValue ? a.Value.ToString() : "Null";
      

      【讨论】:

      • 这个答案至少回答了这个问题。
      【解决方案5】:

      我也将创建一个扩展方法,但将其键入 Nullable 而不是任何 T。

      public static string ToStringOrEmpty<T>(this T? t) where T : struct
      {
          return t.HasValue ? t.Value.ToString() : string.Empty;
      }
      
      // usage
      int? a = null;
      long? b = 123;
      
      Console.WriteLine(a.ToStringOrEmpty()); // prints nothing
      Console.WriteLine(b.ToStringOrEmpty()); // prints "123"
      

      【讨论】:

      • 鉴于投反对票,人们显然不喜欢扩展方法!
      【解决方案6】:

      我喜欢为此创建一个扩展方法,因为我最终会一遍又一遍地这样做

      public static string ToStringNullSafe<T>(this T value)
      {
        if(value == null)
        {
          return null;
        }
        else
        {
           return value.ToString();
        }
      }
      

      如果您愿意,显然可以使用格式字符串创建重载。

      【讨论】:

        猜你喜欢
        • 2014-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-12
        • 2018-05-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多