我有一个私有函数Load,它创建一个列表,创建多个对象,然后将数据网格绑定到列表。代码类似于:
List<Car> cars = new List<Car>();
cars.Add(new Car("Ford", "Mustang", 1967));
cars.Add(new Car("Shelby AC", "Cobra", 1965));
cars.Add(new Car("Chevrolet", "Corvette Sting Ray", 1965));
_dgCars.DataSource = cars;
现在我想在另一个私有函数中循环遍历值。我尝试过类似的东西:
foreach (Car car in cars) // Loop through List with foreach
{
// Need to access individual object properties here
}
我收到的错误是当前上下文中不存在汽车。我可以做出哪些改变,使List能够在全球范围内使用?也许我可以在其他地方定义它?
答案 0 :(得分:5)
嗯,这与列表无关。这是一般变量范围。您没有显示您已声明cars
变量的位置或您尝试使用它的位置 - 但我的猜测是您已将其设为局部变量,并且两个代码段不同方法
您可能希望将其设为实例变量。例如:
public class Test
{
private List<Car> cars;
public void PopulateDataSource()
{
cars = new List<Car>
{
new Car("Ford", "Mustang", 1967),
new Car("Shelby AC", "Cobra", 1965),
new Car("Chevrolet", "Corvette Sting Ray", 1965)
};
_dgCars.DataSource = cars;
}
public void IterateThroughCars()
{
foreach (Car car in cars) // Loop through List with foreach
{
...
}
}
}
答案 1 :(得分:0)
是。在类级别定义列表汽车,即在私有函数之外定义(假设这两个函数在同一个类中)。
答案 2 :(得分:0)
oftype表达式怎么样?
public void IterateThroughCars()
{
foreach (var car in _dgCars.DataSource.OfType<Car>()) // Loop through List with foreach
{
...
}
}
答案 3 :(得分:0)
foreach循环不适用于list,因为该列表不包含.Length属性。 如果你想迭代列表plz使用for循环或while循环,如下所示
for(int i=0;i<cars.Count;i++)
{
Car objCar=cars[i];
}
我希望它能解决你的问题。