有人可以评论我遇到的问题吗?三元运算符会抛出一个错误,这里的论点是如果它的计算结果为 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/