Среда, 2025-01-22

Professor VB - примеры на VB.net и C#
Меню сайта
Вход на сайт
Категории раздела
Уроки C# [9]
Главная » Статьи » C# » Уроки C#

C# - Урок 6 - Массивы. Класс List.

C# - Урок 6 - Массивы. Класс List.



 

 

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

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

Общие сведения о массивах

Массив имеет следующие свойства.

  • Массив может быть одномерныммногомерным или ступенчатым.
  • Количество измерений и длина каждого из измерений задаются, когда создается экземпляр массива. 
    Эти значения невозможно изменить во время существования экземпляра.
  • Значения по умолчанию числовых элементов массива задано равным нулю, а элементы ссылок имеют значение NULL.
  • Разреженный массив является массивом массивов и поэтому его элементы являются ссылочными типами и инициализируются значением null.
  • Индексация массивов начинается с нуля: массив с n элементами индексируется от 0 до n-1.
  • Элементы массива могут быть любых типов, включая тип массива.

 


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

 

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

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

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

Пример:

 


// создаем массив целых чисел

int[] array = new int[5]; 
 

 //объявление массива строк и его инициализация значениями

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;

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

Приведем пример, вспоминая предыдущий урок с условиями - где набирая номер дня недели мы получали его название, в этом уроке напишем программу с 2мерным массивом.

 


Console.WriteLine("Введите порядковый номер дня недели:");

            int a = Convert.ToInt32(Console.ReadLine());

//заготовка для дней

           string[,] nedel = new string [8, 2]

            { {"0", "0"},

              {"1", "ПН"},

              {"2", "ВТ"},

              {"3", "СР"},

              {"4", "ЧТ"},

              {"5", "ПТ"},

              {"6", "СБ"},

              {"7", "ВС"},

            };

           Console.WriteLine(nedel[a,1]);

           Console.WriteLine("\nНажми ENTER");

           Console.ReadKey();


Выбирая цифры от 0 до 7 мы будем получать ответ, выбрав цифру больше 7 - будет ошибка, тк мы выйдем за пределы массива




Ступенчатые (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"};

 

// вставляем в список элемент "Barcelona" на позицию 2
   teams.Insert(2,"Barcelona");

 

// удаляем первое вхождение элемента "Milan" из списка 
   teams.Remove("Milan");

 

   List<string> newTeams = new List<string>() {

 "Liverpool", "Roma", "Borussia", "Valencia" };

 

// добавляем в конец списка элементы списка newTeams
   teams.AddRange(newTeams);
}


 

 

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

Смотреть видео

END



 

Категория: Уроки C# | Добавил: ProfessorVB (2015-11-22)
Просмотров: 10578 | Комментарии: 1 | Теги: Урок, массивы, массив массивов, си шарп, Классы, многомерные, C#, ступенчатые, List | Рейтинг: 5.0/2
Всего комментариев: 1
avatar
1 Crserv • 9:24 PM, 2017-07-24
Где двумерные массивы класса List и их использование? Ладно попробую Insert
avatar
Облако тегов
Поиск
Друзья сайта
  • www.youtube.com

  • vk.com/professorvb

  • Партнерка AIR

  • Партнерка VSP Group
  • Поделись с друзьям
    Теги
    Видео Switch массивы уравнения геометрия continue forEach while Обработка событий задать цвет C# math Vb.net xml количество элементов xml поиск значений математика видеоуроки Soft системы Google pirat Proxy tor НОД нок добавление записи в xml поиск Уроки генератор hello world время деструкторы конструкторы дроби калькулятор десятичные дроби решебник сокращение дробей си шарп мнемоника тренажер random количество дней между датами professorvb дата Урок mindgames алгебра многомерные слова словарь Пароль cos SIN база timer рандом Цикл Break DO for RGB условия массив элементов xml редактирование xml создание вирус MenuStrip AntiCenz fri-gate запрещенные сайты база данных Open RichTextBox XML удалить из xml save TopMost анекдот создать XML Классы Тест OpenFileDialog английский развитие иностранные слова DateTimePicker календарь массив перемешивание массива Анаграммы Рифмоплет Сравнение дробей Меморина скорочтение Использование ребусы комплексные числа программа генератор имен
    Copyright ProfessorVB © 2025