有人可以對我遇到的問題發表評論。三元運算符拋出一個錯誤,這裏的參數是,如果它的計算結果爲null,那麼它應該忽略冒號後面的部分。爲此設置的手錶表示一個例外:三元運算符意外結果
暗示它不能將null轉換爲字符串。這是如何工作的?
ShipmentId = SQLDataReader["ShipmentId"] == DBNull.Value ? 0 : Int32.Parse(SQLDataReader["ShipmentId"].ToString()),
有人可以對我遇到的問題發表評論。三元運算符拋出一個錯誤,這裏的參數是,如果它的計算結果爲null,那麼它應該忽略冒號後面的部分。爲此設置的手錶表示一個例外:三元運算符意外結果
暗示它不能將null轉換爲字符串。這是如何工作的?
ShipmentId = SQLDataReader["ShipmentId"] == DBNull.Value ? 0 : Int32.Parse(SQLDataReader["ShipmentId"].ToString()),
它的建議,與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());
感謝您的幫助。我有一些其他問題,但最終你的代碼工作!祝你有個美好的一天,尼克! – Risho
列ShipmentId
是一個整數,但它也是nullable
,這意味着c#類型是int?
。
的錯誤歸結爲以下代碼:
Int32.Parse((string)null)
解析放棄,因爲你不能把null
爲int
。
要解決此問題,請使用TryParse
。
int ShipmentId = 0;
int.TryParse(SQLDataReader["ShipmentId"].ToString(), out ShipmentId);
如果該值是null
,或這將覆蓋如果一些奇怪的原因的值實際上不能轉換爲int(如「asdf121343fds」)。
'FormatException'通常表示它不能將它解析爲'int'。 –
你應該看到你實際回來的東西。 –
試試'null'而不是'DBNull.Value'' – Jonesopolis