Вопрос по списку в C # - PullRequest
       1

Вопрос по списку в C #

0 голосов
/ 25 ноября 2010

У меня есть приватная функция 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
}

Я получаю ошибку, что автомобили не существуют в текущем контекстеМогу ли я внести изменения, которые позволят сделать список доступным по всему миру?Может быть, я могу определить это в другом месте?

Ответы [ 4 ]

5 голосов
/ 25 ноября 2010

Ну, это не имеет ничего общего со списками как таковыми.Это общая переменная область.Вы не показали, где вы объявили переменную cars или где вы пытаетесь ее использовать - но я предполагаю, что вы сделали ее локальной переменной, и два фрагмента кода имеют разные методы.

Возможно, вы захотите сделать его переменной instance .Например:

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
        {
            ...
        }
    }
}
0 голосов
/ 06 сентября 2016

Цикл foreach не работает со списком, поскольку список не содержит свойства .Length.Если вы хотите перебрать список plz, используйте для цикла loop или while, как показано ниже

for(int i=0;i<cars.Count;i++)
{
  Car objCar=cars[i];
}

Я надеюсь, что это решит вашу проблему.

0 голосов
/ 26 ноября 2010

как насчет выражения oftype?

public void IterateThroughCars()
{
    foreach (var car in _dgCars.DataSource.OfType<Car>()) // Loop through List with foreach
    {
        ...
    }
}
0 голосов
/ 25 ноября 2010

Да. Определите список автомобилей на уровне класса, т. Е. Вне частной функции (при условии, что две функции находятся в одном классе).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...