以下语句有效:

Class.ID = odrDataReader["ID"] == null ? 0 : Convert.ToInt32(odrDataReader["ID"]);


但是以下内容却没有:

Class.ID = odrDataReader["ID"] as int? ?? 0; //ID is always 0


任何人都可以解释为什么?即使ID列不为null,运算符也始终返回0?

解决方案(由柯克建议):

Class.ID = Convert.ToInt32(odrDataReader["ID"] ?? 0);

最佳答案

在第一个中使用Convert.ToInt32(odrDataReader["ID"]),在第二个中使用odrDataReader["ID"] as int?
从您所说的第一个是正确的,因此您也应该在第二个中使用Convert。

实际上,我认为首先是可以的,因为如果您真的想使用??,这看起来会很奇怪。操作员。

编辑:
稍微说明一下odrDataReader["ID"] as int?不是转换。如果odrDataReader [“ ID”]是字符串,它将始终返回null。

关于c# - ?运算符VS ??运算符(operator)用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4895163/

10-13 07:47
查看更多