gpt4 book ai didi

c# - 三元内部的空合并运算符

转载 作者:太空宇宙 更新时间:2023-11-03 18:02:39 25 4
gpt4 key购买 nike

我有这个 C# 代码:

data[j].Actual[0] = data[j].Actual.Count != 0 ? (data[j].Actual[0] ?? 0) : 0;

我想做的是检查计数是否为 0,在这种情况下变量的值应该设置为 0。

如果计数不为 0,我想使用空合并运算符检查该值是否存在,否则返回 0。

我遇到的问题是我收到此错误消息:

Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

我的猜测是,即使 data[j].Actual.Count 为 0,结果也不会为 0,但它会尝试使用空合并运算符执行某些操作。

有什么建议吗?

最佳答案

我认为问题出在作业上;如果 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;
}

这不是一行,但很容易理解。

关于c# - 三元内部的空合并运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48462681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com