Leo*_*ssi 1 c# ternary-operator null-coalescing-operator
我有这个C#代码:
data[j].Actual[0] = data[j].Actual.Count != 0 ? (data[j].Actual[0] ?? 0) : 0;
Run Code Online (Sandbox Code Playgroud)
我想要做的是检查计数是否为0,在这种情况下,变量的值应设置为0.
如果计数不同于0,我想检查null-coalescing运算符,如果该值存在,否则返回0.
我遇到的问题是我收到此错误消息:
指数超出范围.必须是非负数且小于集合的大小.参数名称:index
我的猜测是,即使data[j].Actual.Count为0时,结果也不是0,但它会尝试使用null-coalescing运算符执行某些操作.
有什么建议?
我认为问题在于任务; 如果data[j].Actual是空的(列表/数组/其他),那么你不能只分配 data[j].Actual[0]任何东西.如果这是一个数组,则不能执行任何操作(除非创建新数组).如果这是一个列表,则需要.Add一个值.
我会简化代码:
var actual = data[j].Actual;
if (actual.Count == 0)
{
actual.Add(0);
// or if this is an array: data[j].Actual = new double?[] {0};
}
else if (actual[0] == null)
{
actual[0] = 0;
}
Run Code Online (Sandbox Code Playgroud)
这不是一行,但很容易理解.
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |