Воскресенье, 2025-07-06

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)
Просмотров: 10730 | Комментарии: 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
  • Поделись с друзьям
    Теги
    урок C# си шарп видео hello world MenuStrip Генератор имен Switch дроби решебник Алгебра системы уравнения геометрия Vb.net генератор уроки математика программа условия Math массив элементов видеоуроки добавление записи в xml анекдот поиск создать XML удалить из xml калькулятор НОД нок время дата Деструкторы конструкторы тест сокращение дробей десятичные дроби тренажер английский развитие мнемоника иностранные слова random рандом professorvb OpenFileDialog Timer mindgames цикл словарь база пароль слова cos sin комплексные числа вирус массив классы массивы многомерные Break Continue do for forEach While Обработка событий rgb задать цвет XML база данных xml количество элементов xml поиск значений xml редактирование xml создание soft AntiCenz fri-gate google pirat proxy tor запрещенные сайты Open save RichTextBox TopMost DateTimePicker календарь количество дней между датами перемешивание массива Анаграммы Меморина Ребусы Рифмоплет скорочтение Сравнение дробей использование
    Copyright ProfessorVB © 2025