Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Массивы в Си-шарп. Класс List

Поиск

Массив – это набор однотипных данных, которые располагаются в памяти последовательно друг за другом. Доступ к элементам массива осуществляется по индексу (номеру) элемента. Массив может содержать элементы любого типа данных, можно даже создавать массив массивов (ступенчатый массив). Количество элементов в массиве называется размером массива. Массивы относятся к ссылочнымтипам данных.

Массивы в Си-шарп могут быть одномерными и многомерными.

Одномерные массивы

Одномерный массив по-другому еще называется вектором, и для доступа к его элементам используется только один индекс. Выглядит вектор примерно так:

В Си-шарп объявление массива имеет такую структуру:

тип[] имя_массива = new тип[размер массива];

Пример:

 

int[] array = new int[5]; // создаем массив целых чисел
string[] seasons = new string[4] {"зима","весна","лето","осень"}; //объявление массива строк и его инициализация значениями


Если происходит инициализация, оператор new можно упускать:

 

string[] seasons = {"зима","весна","лето","осень"}; //корректно


Доступ к элементам осуществляется по индексу. Следует помнить, что индексация начинается с нуля – первый элемент массива имеет индекс 0, а последний n-1, где n – размер массива.

 

static void Main(string[] args)
{
int[] numbers = new int[5];
numbers[0] = 5;
numbers[1] = 2;
numbers[4] = 3;
numbers[5] = 2; // ошибка, индекс вне рамок массива
}


В качестве массива можно представить, например, список студентов в группе (имена), показатели температуры воздуха за последние несколько дней и так далее.

Многомерные массивы

Одним из случаев многомерного массива служит двумерный массив (матрица). В матрице для доступа к элементам необходимо использовать два индекса.

Количеством индексов, используемых для доступа к элементам массива называется размерность массива.

 

int[,] numbers1 = new int[2, 2]; // объявление двумерного массива
int[,,] numbers2 = new int[2, 2,3]; // объявление трехмерного массива
int[,] numbers3 = new int[3, 2] { {6, 0},
{5, 7},
{8, 9} }; // инициализация двумерного массива


Элементу массива numbers1 с координатами 1,1 присвоим значение 8:
numbers1[1, 1] = 8;

Многомерные массивы используются гораздо реже одномерных.

Приведу немного бредовый пример данных, которые можно было бы представить в качестве двумерного массива:

Есть матрица 7*4. Строки, которых семь, будут соответствовать дням недели, а 4 столбца - времени дня (00:00, 06:00, 12:00, 18:00). В качестве данных будет температура воздуха.

Значение температуры с координатами 2,3 будет соответствовать температуре в среду в 18:00. На практике, конечно, такие данные представлялись бы в другом виде, но для примера подойдет.

Ступенчатые (jagged) массивы в Си-шарп

Ступенчатый (jagged) массив – это массив массивов. В нем длина каждого массива может быть разной. Примерно это выглядит так:

Пример объявления ступенчатого массива:

 

static void Main(string[] args)
{
int[][] array = new int[3][]; // объявляем массив, который содержит 3 массива
array [0] = new int[3]; //создание внутреннего массива
array [1] = new int[2];
array [2] = new int[5];
}


Доступ к элементам осуществляется по тому же принципу, как и с многомерными маcсивами, только тут уже участвуют две пары квадратных скобок (продолжение примера выше):

 

array [0][1] = 5;
array [1][1] = 8;
array [1][2] = 5; // ошибка, индекс «2» вне границ массива


Свойство Length

Все массивы являются объектами и у них есть некоторые свойства.
Самым полезным для нас будет свойство Length, которое возвращает количество элементов в массиве (во всех размерностях)

 

static void Main(string[] args)
{
int[] numbers = new int[5];
int size = numbers.Length; // size = 5
}


Класс List

Класс List служит для работы со списками, о чем и говорит его название. Это такой «навороченный» массив. Главное отличие от простого массива в том, что он динамический – вы можете вставлять и удалять элементы в любое время, в то время как в простом массиве размер указывается при создании и сделать его больше или меньше нельзя.

 

static void Main(string[] args)
{
List<string> teams = new List<string>(); // создание списка
teams.Add("Barcelona"); // добавление элемента
teams.Add("Chelsea");
teams.Add("Arsenal");
List<string> teams2 = new List<string>() {"Dynamo", "CSKA" }; // инициализация
}


Добавление элементов

Для добавления элементов в список в нем реализовано несколько методов:

 

Метод Описание
   
Add([элемент]) добавляет элемент в конец списка
   
AddRange([список элементов]) добавляет в конец списка элементы указанного списка
   
Insert([индекс],[элемент]) вставляет элемент на позицию соответствующую индексу, все элементы «правее» будут сдвинуты на одну позицию
   
InsertRange([индекс], [список элементов]) то же самое, только вставляется множество элементов
   


Удаление элементов

 

Метод Описание
   
Remove([элемент]) удаляет первое вхождение указанного элемента из списка
   
RemoveRange([индекс], [количество]) удаляет указанное количество элементов, начиная с указанной позиции
   
RemoveAt([индекс]) удаляет элемент, который находится на указанной позиции
   
Clear() удаляет все элементы списка
   


Свойство Count соответствует свойству обычного массива – Length – количество элементов.

 

static void Main(string[] args)
{
List<string> teams = new List<string>() { "Inter", "Milan", "Bayern", "Juventus"};
teams.Insert(2,"Barcelona"); // вставляем в список элемент "Barcelona" на позицию 2
teams.Remove("Milan"); // удаляем первое вхождение элемента "Milan" из списка
List<string> newTeams = new List<string>() { "Liverpool", "Roma", "Borussia", "Valencia" };
teams.AddRange(newTeams); // добавляем в конец списка элементы списка newTeams
}


Стоит помнить, что простые массивы работают быстрее, чем списки List. Если в вашей программе не особо важна производительность и вы не работаете с большими количествами данных, то удобнее использовать список, в противном случае нужно использовать простые массивы.

Домашнее задание

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

 

Урок 6



Поделиться:


Последнее изменение этой страницы: 2016-04-07; просмотров: 1235; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.133.117.107 (0.006 с.)