如果字符串为空,如何避免 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 异常? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ToString() 格式化可为空的 DateTime?
在ORACLE触发器中想使用into 语句给一个变量赋值,但是查询出来的值可能为空,如何避免报错未找到任何数据
Spring的JdbcTemplate查询数据库时,使用queryForList().get(0)返回单行查询时会产生异常,请问如何避免?