Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция9.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
130.56 Кб
Скачать

Использование простую коллекцию

В примерах этого раздела используется универсальный шаблон класс List<T>, который позволяет работать с строго типизированный список объектов.

В следующем примере создается список строк, а затем просматриваются строки с помощью выписки For each… next (Visual Basic) или foreach (c#).

var salmons = new List<string>();

salmons.Add("chinook");

salmons.Add("coho");

salmons.Add("pink");

salmons.Add("sockeye");

foreach (var salmon in salmons)

{

Console.Write(salmon + " ");

}

Если содержимое коллекции известны заранее, можно использовать инициализатор набора для инициализации коллекции. Дополнительные сведения см. в разделе Инициализаторы коллекций (Visual Basic) или Инициализаторы объектов и коллекций (Руководство по программированию в C#).

Следующий пример такой же, как и предыдущий, за исключением того, что инициализатор набора используется для добавления элементов в коллекцию.

var salmons = new List<string> { "chinook", "coho", "pink", "sockeye" };

// Iterate through the list.

foreach (var salmon in salmons)

{

Console.Write(salmon + " ");

}

Можно использовать выписку For… next (Visual Basic) или для (c#) вместо выписки For Each для прохода по коллекции. Это выполняется путем доступа к элементам коллекции по позиции индекса. Индекс начинается с 0 и заканчивается элементов в элементе учитываются минус 1.

Следующий пример выполняет итерацию по элементам коллекции с помощью For…Next вместо For Each.

var salmons = new List<string> { "chinook", "coho", "pink", "sockeye" };

for (var index = 0; index < salmons.Count; index++)

{

Console.Write(salmons[index] + " ");

}

Следующий пример удаляет элемент из коллекции путем указания объекта для удаления.

var salmons = new List<string> { "chinook", "coho", "pink", "sockeye" };

salmons.Remove("coho");

foreach (var salmon in salmons)

{

Console.Write(salmon + " ");

}

Следующий пример удаляет элементы из универсального списка. Вместо выписки For Each, используется оператор For… next (Visual Basic) или для (c#), проходящий по убыванию. Это происходит потому, что метод RemoveAt вызывает элементы после удаленного элемента иметь меньшее значение индекса.

var numbers = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

// Remove odd numbers.

for (var index = numbers.Count - 1; index >= 0; index--)

{

if (numbers[index] % 2 == 1)

{

// Remove the element by specifying

// the zero-based index in the list.

numbers.RemoveAt(index);

}

}

// Iterate through the list.

// A lambda expression is placed in the ForEach method

// of the List(T) object.

numbers.ForEach(

number => Console.Write(number + " "));

// Output: 0 2 4 6 8

Для типа элементов в List<T> можно также определить собственный класс. В следующем примере класс Galaxy, который используется List<T> определенный в коде.

private void IterateThroughList()

{

var theGalaxies = new List<Galaxy>

{

new Galaxy() { Name="Tadpole", MegaLightYears=400},

new Galaxy() { Name="Pinwheel", MegaLightYears=25},

new Galaxy() { Name="Milky Way", MegaLightYears=0},

new Galaxy() { Name="Andromeda", MegaLightYears=3}

};

foreach (Galaxy theGalaxy in theGalaxies)

{

Console.WriteLine(theGalaxy.Name + " " + theGalaxy.MegaLightYears);

}

}

public class Galaxy

{

public string Name { get; set; }

public int MegaLightYears { get; set; }

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]