Программирование >>  Обработка исключительных ситуаций 

1 ... 42 43 44 [ 45 ] 46 47 48 ... 142


Глава 6. Массивы и строки

Таблица 6.1 . Основные элементы класса Array

Элемент

Описание

Length

Свойство

Количество элементов массива (по всем размерностям)

Rank

Свойство

Количество размерностей массива

BinarySearch

Статический

метод

Двоичный поиск в отсортированном массиве

Clear

Статический

метод

Присваивание элементам массива значений по умолчанию

Copy

Статический

метод

Копирование заданного диапазона элементов одного массива в другой массив

CopyTo

Метод

Копирование всех элементов текущего одномерного массива в другой одномерный массив

GetValue

Метод

Получение значения элемента массива

IndexOf

Статический

метод

Поиск первого вхождения элемента в одномерный массив

LastlndexOf

Статический

метод

Поиск последнего вхождения элемента в одномерный массив

Reverse

Статический

метод

Изменение порядка следования элементов на обратный

SetValue

Метод

Установка значения элемента массива

Sort

Статический

метод

Упорядочивание элементов одномерного массива

Свойство 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.



1 ... 42 43 44 [ 45 ] 46 47 48 ... 142

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика