以下声明有效:
Class.ID = odrDataReader["ID"] == null ? 0 : Convert.ToInt32(odrDataReader["ID"]);
Run Code Online (Sandbox Code Playgroud)
但以下不是:
Class.ID = odrDataReader["ID"] as int? ?? 0; //ID is always 0
Run Code Online (Sandbox Code Playgroud)
谁能解释为什么?即使ID列不为空,运算符总是返回0?
解决方案(Kirk建议):
Class.ID = Convert.ToInt32(odrDataReader["ID"] ?? 0);
Run Code Online (Sandbox Code Playgroud)
在第一个中,您使用的Convert.ToInt32(odrDataReader["ID"])是第二个odrDataReader["ID"] as int?.从你说的第一个是正确的,所以你也应该在第二个使用转换.
Actualy我认为首先是好的,因为如果你真的想使用它会看起来很奇怪?运营商.
编辑:解释一下odrDataReader["ID"] as int?不是转换.如果odrDataReader ["ID"]是字符串,它将始终返回null.
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |