|
Программирование >> Обработка исключительных ситуаций
Глава 6. Массивы и строки Таблица 6.1 . Основные элементы класса Array
Свойство Length позволяет реализовывать алгоритмы, которые будут работать с массивами различной длины или, например, со ступенчатым массивом. Использование этого свойства вместо явного задания размерности исключает возможность выхода индекса за границы массива. В листинге 6.3 продемонстрировано применение элементов класса Array при работе с одномерным массивом. Листинг 6.3. Использование методов класса Array с одномерным массивом using System; namespace ConsoleApplicationi { class Classl { static void MainO int[] a {24, 50, 18, 3, 16, -7, 9, -1 }; PrintArrayC Исходный массив: , a ); Console.WriteLineC Array.IndexOf( a, 18 ) ); Array.Sort(a); PrintArray( Упорядоченный массив: , a ); Console.WriteLineC Array.BinarySearch( a, 18) ); public static void PrintArrayC string header, int[] a ) Console.WriteLineC header ); for ( int i = 0; i < a.Length; ++i ) Console.WriteC \t + a[i] ); Console.WriteLineC); Методы Sort, IndexOf и BinarySearch являются статическими, поэтому к ним обращаются через имя класса, а не экземпляра, и передают в них имя массива. Двоичный поиск можно применять только для упорядоченных массивов. Он выполняется гораздо быстрее, чем линейный поиск, реализованный в методе IndexOf. В листинге поиск элемента, имеющего значение 18, выполняется обоими этими способами. ПРИМЕЧАНИЕ- Рассмотренные методы имеют по несколько версий (в этом случае употребляется термин перегруженные методы ), что позволяет выполнять поиск, сортировку и копирование как в массиве целиком, как и в его указанном диапазоне. В классе Classl описан вспомогательный статический метод PrintArray, предназначенный для вывода массива на экран. В него передаются два параметра: строка заголовка header и массив. Количество элементов массива определяется внутри метода с помощью свойства Length. Таким образом, этот метод можно использовать для вывода любого целочисленного одномерного массива. Результат работы программы: /сходный массив: 24 50 18 3 16 -7 9 -1 орядоченный массив: -7 -1 3 9 16 18 24 50 Для того чтобы применять метод PrintArray к массивам, состоящим из элементов другого типа, можно описать его второй параметр как Array. Правда, при этом значение элемента массива придется получать с помощью метода Get Value, поскольку доступ по индексу для класса Array не предусмотрен. Обобщенный метод вызола массива выглядит так: :.:iic static void PrintArrayC string header, Array a ) Console.WriteLineC header ); for ( int i = 0; i < a.Length; ++i ) Console.WriteC \t + a.GetValue(i) ); Console.WriteLineC); Глава 6. Массивы и строки В листинге 6.4 продемонстрировано применение элементов класса Array при работе со ступенчатым массивом. Листинг 6.4. Использование методов класса Array со ступенчатым массивом using System; namespace ConsoleApplicationi { class Classl / №?£ШМЮ int[][] a = new int[3][]; a[0] = new int [5] { 24. 50. 18. 3. a[l] = new int [3] { 7, 9. -1 }; a[2] = new int [4] { 6. 15, 3, 1 }; 16 }; Console.WriteLineC Исходный массив: ); for ( int i = 0; i < a.Length; ++i ) for ( int j = 0; j < a[i].Length; ++j ) Console.WriteC \t + a[i][j] ); Console.WriteLineC); Console.WriteLineC Array.IndexOf( a[0], 18 ) ); Обратите внимание на то, как внутри цикла по строкам определяется длина каждого массива. Результат работы программы: Исходный массив: Оператор foreach Оператор foreach применяется для перебора элементов в специальным образом организованной группе данных. Массив является именно такой группой1. Удобство этого вида цикла заключается в том, что нам не требуется определять количество элементов в группе и выполнять их перебор по индексу: мы просто указываем на необходимость перебрать все элементы группы. Синтаксис оператора: foreach ( тип имя in выражение ) телоцикла Отчего это так, вы поймете, изучив главу 9.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |