gpt4 book ai didi

c# - 使用 List> 时索引超出数组范围

转载 作者:太空狗 更新时间:2023-10-29 21:22:39 25 4
gpt4 key购买 nike

我有这样一个类:

class MyClass { public object[] Values; }

我在其他地方使用它:

MyClass myInstance = new MyClass() {Values = new object[]{"S", 5, true}};

List<Func<MyClass, object>> maps = new List<Func<MyClass, object>>();

for (int i = 0; i < myInstance.Values.Length ; i++)
{
maps.Add(obj => obj.Values[i]);
}

var result = maps[0](myInstance); //Exception: Index outside the bounds of the array

我以为它会返回S,但它抛出异常。知道发生了什么事吗?

最佳答案

要查看发生了什么,请将您的 lambda 更改为 maps.Add(obj => i);

有了这个改变,result 将是 3,这就是为什么你会得到 IndexOutOfBoundException 异常:你试图得到 >myInstance[3] 不存在。

要使其工作,请在循环中添加本地 int 变量并将其用作索引而不是循环计数器 i:

for (int i = 0; i < myInstance.Values.Length; i++)
{
int j = i;
maps.Add(obj => obj.Values[j]);
}

关于c# - 使用 List<Func<T,object>> 时索引超出数组范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20739380/

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