如果字符串为空,如何避免 Tostring 异常? [复制]

Posted

技术标签:

【中文标题】如果字符串为空,如何避免 Tostring 异常? [复制]【英文标题】:How to avoid Tostring exception if string is null? [duplicate] 【发布时间】: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 请提供一些例子 【参考方案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() ?? ""; 别担心,伙计。

以上是关于如果字符串为空,如何避免 Tostring 异常? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

object转字符串

如何使用 ToString() 格式化可为空的 DateTime?

如果jsp表单元素的值为空,如何避免null出现在页面上?

在ORACLE触发器中想使用into 语句给一个变量赋值,但是查询出来的值可能为空,如何避免报错未找到任何数据

Spring的JdbcTemplate查询数据库时,使用queryForList().get(0)返回单行查询时会产生异常,请问如何避免?

对于一个首次加载的页面。判断其Cookies是不是为空