三元运算符意外结果
本文关键字:运算符 意外 结果 三元 | 更新日期: 2023-09-27 18:34:40
有人可以评论我遇到的问题吗?三元运算符抛出错误,这里的论点是,如果它的计算结果为 null,那么它应该忽略冒号后面的部分。为此设置的监视指示异常:
Int32.Parse(SQLDataReader["TrayId"].ToString())' threw an exception of Type 'System.FormatException
建议它无法将 null 转换为字符串。这是它的工作原理吗?
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"(。
建议与
DBNull 进行比较,使用 DBNull.Value.Equals 方法,如本页所述:http://msdn.microsoft.com/en-us/library/system.dbnull.value.aspx
ShipmentId = DBNull.Value.Equals(SQLDataReader["ShipmentId"]) ? 0 : Int32.Parse(SQLDataReader["ShipmentId"].ToString());