c# - 三元运算符意外结果

标签 c#

有人可以评论我遇到的问题吗?三元运算符会抛出一个错误,这里的论点是如果它的计算结果为 null 那么它应该忽略冒号后面的部分。为此设置的Watch表示异常:

Int32.Parse(SQLDataReader["TrayId"].ToString())' threw an exception of Type 'System.FormatException

表明它无法将空值转换为字符串。这是它的工作原理吗?

ShipmentId = SQLDataReader["ShipmentId"] == DBNull.Value ? 0 : Int32.Parse(SQLDataReader["ShipmentId"].ToString()),

最佳答案

ShipmentId是一个整数,但也是nullable,也就是说c#类型是int?

错误归结为这段代码:

Int32.Parse((string)null)

解析失败,因为您无法将 null 转换为 int

要解决此问题,请使用 TryParse

int ShipmentId = 0;
int.TryParse(SQLDataReader["ShipmentId"].ToString(), out ShipmentId);

如果值为 null,或者如果由于某些奇怪的原因该值实际上不能转换为 int(如“asdf121343fds”),这将涵盖。

关于c# - 三元运算符意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19257258/

相关文章:

c# - 如何在我的测试库中创建和运行网络主机?

c# - 将图像插入 mysql 数据库时出现问题

c# - 关于 C# 表达式树的建议

c# - 如何将我的 WP7 界面绑定(bind)到我异步检索的数据?

c# - 如何调整一个克隆体的形状/尺寸以影响场景 View 中的所有其他克隆体

c# - 如何在 C# 中重定向 IronPython 的标准输出?

c# - 如何使用C#使用网络摄像头跟踪眼睛的运动?

c# - AS2 服务器 - 使用(现代)C# .NET 接收 AS2 消息

c# - 使用特定字符查询 yahoo placefinder 时出现 500 错误?

c# - 运行 CPU/内存密集型任务 - 哪种编码方法性能最高?