c# - ?运营商VS??运营商使用

标签 c#

下面的语句有效:

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

但以下不是:

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

谁能解释一下为什么??即使 ID 列不为空,运算符也始终返回 0?

解决方案(柯克建议):

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

最佳答案

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

其实我觉得 first 很好,因为如果你真的想用 ?? 会看起来很奇怪运营商。

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

关于c# - ?运营商VS??运营商使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4895163/

相关文章:

c# - session 值在回发和页面刷新时变为空

c# - 使用 Process.Start 运行程序时,找不到它的资源文件

c# - 将 DocumentViewer 的语言设置为德语(来自代码,而非 XAML)

c# - 用C#在Word中用图片替换文本

C# 比较算法

c# - 我如何停靠 asp.net : table to my web page so it (the table dock) dynamically adjusts to browser width?

c# - 如何合并两个 XDocuments 以删除重复项

javascript - 根据另一个文本框中输入的文本显示文本框中的文本

c# - 如何验证 KeyUsage 的证书

c# - 链接按钮还是超链接?