Язык программирования C#9 и платформа .NET5
{// Вывести имя.Console.Write(gothicBands[i] + ", ");}Console.WriteLine();}Вызов метода
дает в результате следующий вывод:SystemArrayFunctionality()=> Working with System.Array.-> Here is the array:Tones on Tail, Bauhaus, Sisters of Mercy,-> The reversed arraySisters 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, можно записать по-другому:gothicBandsfor (int i = 0; i < gothicBands.Length; i++){Index idx = i;// Вывести имя.Console.Write(gothicBands[idx] + ", ");}Индекс с операцией конца позволяет указывать количество позиций, которые необходимо отсчитать от конца последовательности, начиная с длины. Не забывайте, что последний элемент в последовательности находится в позиции, на единицу меньше длины последовательности, поэтому
приведет к ошибке. В следующем коде элементы массива выводятся в обратном порядке:^0for (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");Диапазоны можно передавать последовательности также с использованием нового типа данных
, как показано ниже:RangeRange r = 0..2; //the end of the range is exclusiveforeach (var itm in gothicBands[r]){// Вывести имя.Console.Write(itm + ", ");}Console.WriteLine("\n");Диапазоны можно определять с применением целых чисел или переменных типа
. Тот же самый результат будет получен посредством следующего кода:IndexIndex idx1 = 0;Index idx2 = 2;Range r = idx1..idx2; // Конец диапазона является исключающим.foreach (var itm in gothicBands[r]){// Вывести имя.Console.Write(itm + ", ");}Console.WriteLine("\n");Если не указано начало диапазона, тогда используется начало последовательности. Если не указан конец диапазона, тогда применяется длина диапазона. Ошибка не возникает, т.к. конец диапазона является исключающим. В предыдущем примере с массивом, содержащим три элемента, все диапазоны представляют одно и то же подмножество:
gothicBands[..]gothicBands[0..^0]gothicBands[0..3]Понятие методов
Давайте займемся исследованием деталей определения методов. Методы определяются модификатором доступа и возвращаемым типом (или
, если ничего не возвращается) и могут принимать параметры или не принимать их. Метод, который возвращает значение вызывающему коду, обычно называется функцией, а метод, не возвращающий значение, как правило, называют собственно методом.void