关于C#中列表范围的问题

Jos*_* U. 0 c# scope list

我有一个私有函数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能够在全球范围内使用?也许我可以在其他地方定义它?

Jon*_*eet 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
        {
            ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)