【发布时间】:2018-07-05 20:54:41
【问题描述】:
我有这个 C# 代码:
data[j].Actual[0] = data[j].Actual.Count != 0 ? (data[j].Actual[0] ?? 0) : 0;
我要做的是检查计数是否为0,在这种情况下,变量的值应该设置为0。
如果计数与 0 不同,我想使用 null-coalescing 运算符检查该值是否存在,否则返回 0。
我遇到的问题是我收到以下错误消息:
索引超出范围。必须是非负数且小于 集合。参数名称:索引
我的猜测是,即使 data[j].Actual.Count 为 0,它的结果也不会为 0,但它会尝试使用 null-coalescing 运算符做一些事情。
有什么建议吗?
【问题讨论】:
-
Any suggestions?不要花里胡哨,只写可读的代码 -
这里有哪些类型?
data[j].Actual是什么? -
您的问题是,
data[j].Actual[0] ?? 0仍在尝试访问索引 0 处的项目。如果该集合没有项目,则 null-coalesce 不会保存异常。您必须检查它是否至少包含一项。 -
@MarcGravell
double?的列表 -
@Jonesopolis 如果
Count是0,则该部分将永远不会被访问;问题出在左侧
标签: c# ternary-operator null-coalescing-operator