【问题标题】:How to avoid Tostring exception if string is null? [duplicate]如果字符串为空,如何避免 Tostring 异常? [复制]
【发布时间】:2019-01-25 05:21:55
【问题描述】:

我想将数据行值转换为sring如下。

userGuid = dr["user_guid"].ToString();

它可能包含 Guid 或 null(不是字符串为空)。如果它包含 null 我得到了异常。

我该如何克服这个..

【问题讨论】:

  • @AndroidNoobie 我尝试它适用于空字符串。但对于 null 它不起作用
  • 嘿伙计,查找 null 安全导航运算符
  • 例子很多,比如dr["user_guid"]?.ToString();
  • @Andrew null 安全导航运算符是什么意思
  • @SeM 请提供一些例子

标签: c# datareader


【解决方案1】:

我猜你正在从数据阅读器中读取数据。

您必须检查该值是 null 还是 DBNull,然后您才能调用字符串方法。

    string user_guid = dr["user_guid"] != DBNull.Value && dr["user_guid"] != null ? dr["user_guid"].ToString() : null ; 

希望这会有所帮助。

【讨论】:

    【解决方案2】:
    if (dr[user_guid"] != null) {
        //whatever you want to do
    } else {
        //handle the null value in some way
    }
    

    或者,

    dr["user_guid"]?.ToString();
    

    那个?就是所谓的“null-safe navigator”。

    【讨论】:

    • 我也试试这个,我想在很多地方使用这个转换。所以这导致了太多的代码。我想要简单的解决方案
    • 这是一个简单的解决方案。如果对空值的标准检查过多,我不确定您可能期待什么。
    • 我知道这是一个简单的问题。我只想通过单行代码或仅在一个地方覆盖
    【解决方案3】:

    这可能很有用,是多种方式之一

     userGuid  = dr["user_guid"]?.ToString()?? "Default Value";
    

    请根据您的应用程序逻辑将“默认值”替换为您认为合适的任何值。

    【讨论】:

      【解决方案4】:

      也许是这样: userGuid = dr["user_guid"].ToString() ?? throw new Exception();

      【讨论】:

      • 他想避免异常。
      • 对不起。没问题。 userGuid = dr["user_guid"].ToString() ?? "";
      • 别担心,伙计。
      猜你喜欢
      • 2018-05-27
      • 1970-01-01
      • 2011-10-01
      • 2019-06-07
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 2017-01-21
      相关资源
      最近更新 更多