Чтение онлайн

на главную - закладки

Жанры

Язык программирования C#9 и платформа .NET5
Шрифт:

string[] gothicBands = {"Tones on Tail", "Bauhaus", "Sisters of Mercy"};

// Вывести имена в порядке их объявления.

Console.WriteLine("-> Here is the array:");

for (int i = 0; i < gothicBands.Length; i++)

{

// Вывести имя.

Console.Write(gothicBands[i] + ", ");

}

Console.WriteLine("\n");

// Обратить порядок
следования элементов...

Array.Reverse(gothicBands);

Console.WriteLine("-> The reversed array");

// ...и вывести их.

for (int i = 0; i < gothicBands.Length; i++)

{

// Вывести имя.

Console.Write(gothicBands[i] + ", ");

}

Console.WriteLine("\n");

// Удалить все элементы кроме первого.

Console.WriteLine("-> Cleared out all but one...");

Array.Clear(gothicBands, 1, 2);

for (int i = 0; i < gothicBands.Length; i++)

{

// Вывести имя.

Console.Write(gothicBands[i] + ", ");

}

Console.WriteLine;

}

Вызов метода

SystemArrayFunctionality
дает в результате следующий вывод:

=> Working with System.Array.

– > Here is the array:

Tones on Tail, Bauhaus, Sisters of Mercy,

– > The reversed array

Sisters of Mercy, Bauhaus, Tones on Tail,

– > Cleared out all but one...

Sisters of Mercy,,,

Обратите внимание, что многие члены класса

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

Использование индексов и диапазонов (нововведение в версии 8.0)

Для упрощения работы с последовательностями (включая массивы) в версии C# 8 были введены два новых типа и две новых операции, применяемые при работе с массивами:

System.Index
представляет индекс в последовательности;

System.Range
представляет поддиапазон индексов;

• операция конца (

^
) указывает, что индекс отсчитывается относительно конца последовательности;

• операция диапазона (

...
) устанавливает в своих операндах начало и конец диапазона.

На заметку!

Индексы и диапазоны можно использовать с массивами, строками,
Span<T>
и
ReadOnlySpan<T>
.

Как вы уже видели, индексация массивов начинается с нуля (

0
). Конец последовательности — это длина последовательности минус единица. Показанный выше цикл
for
, который выводил содержимое массива
gothicBands
, можно записать по-другому:

for (int i = 0; i < gothicBands.Length; i++)

{

Index idx = i;

// Вывести имя.

Console.Write(gothicBands[idx] + ", ");

}

Индекс с операцией конца позволяет указывать количество позиций, которые необходимо отсчитать от конца последовательности, начиная с длины. Не забывайте, что последний элемент в последовательности находится в позиции, на единицу меньше длины последовательности, поэтому

^0
приведет к ошибке. В следующем коде элементы массива выводятся в обратном порядке:

for (int i = 1; i <= gothicBands.Length; i++)

{

Index idx = ^i;

// Вывести имя.

Console.Write(gothicBands[idx] + ", ");

}

Операция диапазона определяет начальный и конечный индексы и обеспечивает доступ к подпоследовательности внутри списка. Начало диапазона является включающим, а конец — исключающим. Например, чтобы извлечь первые два элемента массива, создайте диапазон от 0 (позиция первого элемента) до 2 (на единицу больше желаемой позиции):

foreach (var itm in gothicBands[0..2])

{

// Вывести имя.

Console.Write(itm + ", ");

}

Console.WriteLine("\n");

Диапазоны можно передавать последовательности также с использованием нового типа данных

Range
, как показано ниже:

Range r = 0..2; //the end of the range is exclusive

foreach (var itm in gothicBands[r])

{

// Вывести имя.

Console.Write(itm + ", ");

}

Console.WriteLine("\n");

Диапазоны можно определять с применением целых чисел или переменных типа

Index
. Тот же самый результат будет получен посредством следующего кода:

Index idx1 = 0;

Index idx2 = 2;

Range r = idx1..idx2; // Конец диапазона является исключающим.

Поделиться:
Популярные книги

Часовая башня

Щерба Наталья Васильевна
3. Часодеи
Фантастика:
фэнтези
9.43
рейтинг книги
Часовая башня

Попаданка в Измену или замуж за дракона

Жарова Анита
Любовные романы:
любовно-фантастические романы
6.25
рейтинг книги
Попаданка в Измену или замуж за дракона

На границе империй. Том 9. Часть 3

INDIGO
16. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 9. Часть 3

Жена на пробу, или Хозяйка проклятого замка

Васина Илана
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Жена на пробу, или Хозяйка проклятого замка

Ваше Сиятельство

Моури Эрли
1. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Ваше Сиятельство

Восход. Солнцев. Книга I

Скабер Артемий
1. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга I

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги

Надуй щеки!

Вишневский Сергей Викторович
1. Чеболь за партой
Фантастика:
попаданцы
дорама
5.00
рейтинг книги
Надуй щеки!

Случайная свадьба (+ Бонус)

Тоцка Тала
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Случайная свадьба (+ Бонус)

Газлайтер. Том 5

Володин Григорий
5. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 5

Мастер Разума III

Кронос Александр
3. Мастер Разума
Фантастика:
героическая фантастика
попаданцы
аниме
5.25
рейтинг книги
Мастер Разума III

Наследник 2

Шимохин Дмитрий
2. Старицкий
Фантастика:
попаданцы
альтернативная история
фэнтези
5.75
рейтинг книги
Наследник 2

Неучтенный. Дилогия

Муравьёв Константин Николаевич
Неучтенный
Фантастика:
боевая фантастика
попаданцы
7.98
рейтинг книги
Неучтенный. Дилогия

Светлая тьма. Советник

Шмаков Алексей Семенович
6. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Светлая тьма. Советник