我有一个私有函数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;
Run Code Online (Sandbox Code Playgroud)
现在我想循环遍历另一个私有函数中的值.我尝试过类似的东西:
foreach (Car car in cars) // Loop through List with foreach
{
// Need to access individual object properties here
}
Run Code Online (Sandbox Code Playgroud)
我收到的错误是当前上下文中不存在汽车.我可以做出哪些改变,使List能够在全球范围内使用?也许我可以在其他地方定义它?
嗯,这与列表无关.这是一般变量范围.你没有显示你已经声明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
{
...
}
}
}
Run Code Online (Sandbox Code Playgroud)