Использование свойства Length
В С# массивы реализованы как объекты, и это дает определенные преимущества при работе с массивами. Одно из них — возможность использования свойства Length. Каждый массив имеет ассоциированное с ним свойство Length, в котором содержится информация о максимальном количестве элементов массива (то есть в массиве (имеется в виду класс массива) определено поле, содержащее информацию о длине массива).
int[] sample = new int [10];
int val = sample.Length;
Цикл foreach
В С# появился цикл foreach, который позволяет перебирать коллекции. Коллекции – это группа объектов. В C# определены несколько типов коллекций, одним из которых является массив.
В цикле foreach удобно также перебирать объекты, поддерживающие перечисление, например, списки, словари и т.д.
Общий формат синтаксиса имеет вид:
foreach (type var_name in collection)
{
statements;
}
Здесь словосочетание typevar_name – это тип и имя итерационной переменной, которая будет принимать значения из коллекции при выполнении цикла foreach. Циклически обрабатываемая коллекция указывается словом collection.
Цикл работает в полном соответствии со своим названием - тело цикла выполняется для каждого элемента в контейнере. Тип идентификатора должен быть согласован с типом элементов, хранящихся в контейнере данных. Предполагается также, что элементы контейнера (массива, коллекции) упорядочены. На каждом шаге цикла идентификатор, задающий текущий элемент контейнера, получает значение очередного элемента в соответствии с порядком, установленным на элементах контейнера. С этим текущим элементом и выполняется тело цикла - выполняется столько раз, сколько элементов находится в контейнере. Цикл заканчивается, когда полностью перебраны все элементы контейнера.
Серьезным недостатком циклов foreach в языке C# является то, что цикл работает только на чтение, но не на запись элементов. Так что наполнять контейнер элементами приходится с помощью других операторов цикла.
В следующем примере в цикле foreach производится обработка массива.
int k;
int[] mas = new int[5];
for(k=0; k < 5; k++) mas[k]=k;
sum = 0;
foreach(int i in mas)
{
Console.Write( "Элемент массива = " + i);
sum += i;
}
То есть, обработка элементов массива с помощью цикла foreach производится в порядке возрастания их индексов.
С помощью цикла foreach можно также перебирать элементы многомерных массивов. При этом последовательно обрабатываются элементы от первого до последнего в каждой строке.
Очень удобно перебирать с помощью цикла foreach различные коллекции, например, список.
Класс List
Класс List призван для работы со списками. В классе List есть методы по добавлению, удалению, вставке элементов и прочее. Списки – это очень удобный инструмент для программирования. Списки применяются там, где количество элементов в коллекции изначально неизвестно. Списки выгодно отличаются от массивов тем, что по ходу выполнения программы их размер можно изменять в любую сторону.
Общий синтаксис по описанию и созданию списка следующий.
List<type> name = new List<type>();
Здесь type – один из возможных типов. Все элементы создаваемого списка будут иметь этот тип. Имя коллекции задает параметр name.
После своего создания список может быть пополнен элементами. Любой элемент может быть удален в любой момент и т.д.
Для добавления элементов в список в нем реализовано несколько методов:
Метод | Описание |
Add([элемент]) | добавляет элемент в конец списка |
AddRange([список элементов]) | добавляет в конец списка элементы указанного списка |
Insert([индекс],[элемент]) | вставляет элемент на позицию соответствующую индексу, все элементы «правее» будут сдвинуты на одну позицию |
InsertRange([индекс], [список элементов]) | то же самое, только вставляется множество элементов |
List<string> dinosaurs = new List<string>();
dinosaurs.Add("Tyrannosaurus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("Mamenchisaurus");
Удаление элементов
Метод | Описание |
Remove([элемент]) | удаляет первое вхождение указанного элемента из списка |
RemoveRange([индекс], [количество]) | удаляет указанное количество элементов, начиная с указанной позиции |
RemoveAt([индекс]) | удаляет элемент, который находится на указанной позиции |
Clear() | удаляет все элементы списка |
Свойство Count соответствует свойству обычного массива – Length – количество элементов.
Метод Contains позволяет определить, входит ли указываемый в функции элемент в список.
Возвращаясь к циклу foreach. Определим список объектов Car. Тогда работать с его элементами с помощью данного типа цикла становится очень удобно.
List<Car> cars = new List<Car>();
Заполняем список машинами
foreach ( Car car in cars )
{