C#_3.ppt
- Количество слайдов: 12
C# массивы Объявление массива type [] array_name; Например int [] My_int. Array; // это только объявление. Сам массив надо еще создать My_int. Array = new int[10]; Можно одновременно объявлять и создавать массив int n; n = 100; int [] My_int. Array = new int[n]; // здесь объявляется и создается массив с количеством элементов // заданных в переменной Массивы на самом деле являются объектами класса System. Array поэтому у них есть свойства. Например можно получить его длину int len = My_int. Array. Length;
C# массивы Поскольку массив является объектом, то в нем контролируется доступ к элементам массива. При попытке доступы к несуществующему элементу генерируется исключение Index. Out. Of. Range. Exeption. Оно может быть обработано в программе try { for(int i = 1; i < 500; i++) { My_int. Array[i] = 0; } } catch(Index. Out. Of. Range. Exeption e) { Console. Write. Line(“Message = “ + e. Message); }
C# массивы Массивы можно явно инициализировать. int [] My_int. Array = new int[5] {10, 20, 30, 40, 50}; string [] str. Array = new string {“Hello”, “All”}; При этом надо инициализировать все элементы массива!!! При инициализации можно опустить оператор new, тогда размер массива определится автоматически int [] My_int. Array = {10, 20, 30, 40, 50}; string [] str. Array = {“Hello”, “All”}; Свойства массивов Свойство Тип Описание Length int Возвращает количество элементов Rank int Возвращает размерность
C# массивы Методы массивов Метод Возвр Описание ащаем ый тип Binary. Search() Статический int Поиск в одномерном отсортированном массиве. Перегружен Clear() Статический void Очистка диапазона элементов (ставит 0 или null). Перегружен Copy() Статический void Копирует диапазон элементов из одного массива в другой. Перегружен Index. Of() Статический int Находит первый элемент массива, совпадающий с заданным значением и возвращает его индекс. Перегружен Last. Index. Of() Статический int Находит последний элемент массива, совпадающий с заданным значением и возвращает его индекс. Перегужен
C# массивы Reverse() Статический void Изменяет порядок следования элементов массива на обратный. Перегружен Sort() Статический void Сортирует (по возрастанию) элементы одномерного массива Перегружен Equals() унаследован от Object bool Возвращает булево значение означающее равенство двух экземпляров класса Object. Перегружен Get. Length() int Возвращает количество элементов в указанном измерении массива Get. Value() object Возвращает значение элемента одномерного массива с указанным номером. Перегружен Set. Value() void Присваивает значение указанному элементу массива. Перегружен To. String() унаследован от Object string Возвращает строку, описывающую текущий объект Методов гораздо больше. Здесь основные. Естественно у большинства методов есть аргументы.
C# массивы Статические методы вызываются из того класса в котором они определены, а не как метод из объекта. В нашем случае из класса Array Например int [] My_int. Array = {30, 50, 10, 40, 20}; Array. Sort(My_int. Array); // сортировка int index = Array. Binary. Search(My_int. Array, 20); // бинарный поиск для него массив должен быть отсортирован!!! // если такого элемента в массиве нет, то поиск возвращает // отрицательное число равное по модулю номеру первого // элемента, который больше искомого минус 1 Если не хочется сортировать, то надо пользоваться методами Index. Of() и Last. Index. Of() int index = Array. Inex. Of(My_int. Array, 20);
C# массивы Двумерные массивы Объявление массива type [, ] array_name; // в отличие от обычного C++ Например int [, ] My_two_Array; Создание int rows = 10; int cols = 20; My_two_Array = new int[rows, cols]; for( int i = 0: i < rows; i++) My_two_Array[i, j] = 0;
C# массивы Двумерные массивы можно прямо инициализировать string [, ] names = { {“Иван”, “Иванович”, “Иванов”}, {“Петр”, “Петрович”, “Сидоров”}, {“Василий”, “Иванович”, “Чапаев”}, {“Никита”, “Сергеевич”, “Михалков”}, }; // Это двумерный массив строк размерностью 4 x 3 int rows, cols, rank, len; rank = names. Rank; // это 2 - размерность len = names. Length; // это 12 – количество элементов rows = names. Get. Length(0); // это 4 - количество рядов cols = names. Get. Length(1); // это 3 - количество столбцов
C# массивы Зубчатые массивы В таких массивах строки тоже являются массивами, поэтому количество элементов в строках массива может быть разным Объявление type [][] array_name; // Здесь в отличие от C++ это не дойной зубчатый массив Пример string [][] names; // объявляем // создаем четыре элемента типа массив строк names = new string[3][]; names – это переменная описывающая массив из 3 строк, каждая из которых служит для хранения массива строк. Чтобы закончить создание массива names, надо создать массив строк для каждого элемента
C# массивы names[0] = new string[3]; // затем присваиваем значения этим строкам names[0][0] = “Василий” ; names[0][1] = “Иванович” ; names[0][2] = “Чапаев” ; // первая строка зубца создана // создаем другую строку зубца names[1] = new string[2]; names[1][0] = “Анка” ; names[1][1] = “Пулеметчица” ; // третий зубец инициализируем явно names[3] = {“Фурманов”; “Петька ”, “Белые ”, “Красные”}; Можно пользоваться свойствами Rank и Length Однако они получаются для всего массива и для каждой строки. Естественно это разные значения.
C# массивы int rank, rank 0, rank 1, rank 2; int len, len 0, len 1, len 2; rank = names. Rank ; // это 1 (внешний массив одномерный) len = names. Length; // это 3 (размерность внешнего массива) rank 0 = names[0]. Rank ; // это 1 (Внутренний массив 0 тоже // одномерный) len 0 = names[0]. Length; // это 3 (размерность внутр. Массива 0) rank 1 = names[1]. Rank ; // это 1 тоже len 1 = names[1]. Length; // это 2 (размерность внутр. Массива 1) rank 2 = names[2]. Rank ; // это 1 тоже len 2 = names[2]. Length; // это 4 (размерность внутр. Массива 2)
C# массивы for(int row = 0; row < names. Length; row++) for(int elem = 0; elem < names[row]. Length; elem++) { Console. Write. Line(“names[“ + row + “][“ + element + “] = + names[row][elem]); } Результат на экране names[0][0] = Василий names[0][1] = Иванович names[0][2] = Чапаев names[1][0] = Анка names[1][1] = Пулеметчица names[2][0] = Фурманов names[2][1] = Петька names[2][2] = Белые names[2][3] = Красные
C#_3.ppt