我有一个数组,其中包含我想要使用a传输到列表的属性for loop.
for (int i = 0; i < data.cars.Count; i++)
{
var model = data.cars[i].model.ToString();
cars = new List<Car>
{
new Car { Model = model }
};
}
Run Code Online (Sandbox Code Playgroud)
继续获得System.ArgumentOutOfRangeException:Index was out of range例外.不确定如何Car使用a 在新实例中插入每个模型名称for loop.
编辑:
data.Count是一个错字,使用时抛出相同的异常data.cars.Count.为了澄清,长度data.cars.Count是20个包含model属性的对象.
可能你可以删除这个循环并使用单个linq行
var cars = data.cars.Select(x => new Car{ Model = x.model}).ToList();
Run Code Online (Sandbox Code Playgroud)
您的实际代码会触发上述异常,因为无论data.Count是什么,它都不等于cars集合中的元素数量.如果data.Count大于data.cars集合中的元素数,则会发生异常.
但是,您的代码中还有另一个逻辑错误,在每个循环中,您的代码会创建一个包含单个Car元素的新List.在每个循环中,您的代码会将此列表分配给外部变量汽车.当然,当循环退出时,您将外部变量汽车分配给仅包含循环中最后一个元素的列表.
如果您更喜欢标准循环方法,那么您可以编写
List<Car> cars = new List<Car>();
foreach (var car in data.cars)
{
cars.Add(new Car { Model = car.model });
}
Run Code Online (Sandbox Code Playgroud)