Массивы С#.ppt
- Количество слайдов: 10
Массивы в С#
Массивом называют упорядоченную последовательность элементов одного типа. Каждый элемент массива имеет индексы, определяющие порядок элементов. Массивы бывают: n Статические - если границы заданы константными n n выражениями. Динамические - если выражения, задающие границы, зависят от переменных. Одномерные массивы Многомерные массивы Ступенчатые массивы
Одномерные массивы int[] k; //k – ссылка на одномерный массив k=new int [3]; //Определяем массив из 3 -х целых k[0]=-5; k[1]=4; k[2]=55; //Задаем элементы массива Console. Write. Line(k[2]. To. String()); //Выводим третий элемент массива int[] k = {-5, 4, 55}; // Инициализация массива int[] v, u = new int[3]; for(int i=0; i<3; i++) u[i] =i+1; v = new int[4]; v=u; //допустимое присваивание }
Многомерные массивы <тип>[, . . . , ] <объявители>; int[, ] k = new int [2, 3]; - двумерный массив int[, , ] k = new int [10, 10]; - трехмерного массива int[, ] k = {{2, -2}, {3, -22}, {0, 4}}; - инициализация // пример перемножения матриц public void Mult. Matr(int[, ]A, int[, ]B, int[, ]C){ if (A. Get. Length(1) != B. Get. Length(0)) Console. Write. Line("Mult. Matr: ошибка размерности!"); else for(int i = 0; i < A. Get. Length(0); i++) for(int j = 0; j < B. Get. Length(1); j++) { int s=0; for(int k = 0; k < A. Get. Length(1); k++) s+= A[i, k]*B[k, j]; C[i, j] = s; } }
Ступенчатые массивы int[][] k = new int [2][]; - //Объявление 2 -го ступенчатого массива k[0]=new int[3]; // 0 -й элемент ступенчатого массива k[1]=new int[4]; // 1 -й элемент ступенчатого массива
int Fcount =3; string[] Fathers = new string[Fcount]; Fathers[0] ="Николай"; Fathers[1] = "Сергей"; Fathers[2] = "Петр"; string[][] Children = new string[Fcount][]; Children[0] = new string[] {"Ольга", "Федор"}; Children[1] = new string[]{"Сергей", "Валентина", "Ира", "Дмитрий"}; Children[2] = new string[]{"Мария", "Ирина", "Надежда"}; Print(Fathers, Children); // печать на экран public void Print(string [] Fathers, string[][] Children) { for(int i = 0; i < Fathers. Length; i++) { Console. Write. Line("Отец : {0}; Его дети: ", Fathers[i]); for(int j = 0; j < Children[i]. Length; j++) Console. Write( Children[i][j] + " "); Console. Write. Line(); } }
Базовый класс System. Array Свойства класса Array Свойство Описание Is. Fixed. Size True, если массив статический Length Число элементов массива Rank Размерность массива Статические методы класса Array Метод Описание Binary. Search() Двоичный поиск. Clear() Выполняет начальную инициализацию элементов. В зависимости от типа элементов устанавливает значение 0 для арифметического типа, false - для логического типа, Null для ссылок, "" - для строк. Copy() Копирование части или всего массива в другой массив. Index. Of() Индекс первого вхождения образца в массив. Last. Index. Of() Индекс последнего вхождения образца в массив. Reverse() Обращение одномерного массива. Sort() Сортировка одномерного массива встроенных типов данных.
Базовый класс System. Array Динамические методы класса Array Get. Value() Set. Value() Возвращает или устанавливает значение указанного индекса для массива. Get. Lower. Bound() Get. Upper. Bound() Используется для определения нижней или верхней границы выбранного измерения массива. Clone() Интерфейс ICloneable Позволяет создать плоскую или глубокую копию массива. В первом случае создаются только элементы первого уровня, а ссылки указывают на те же самые объекты. Во втором случае копируются объекты на всех уровнях. Для массивов создается только плоская копия. Copy. To() Интерфейс ICollection Копируются все элементы одномерного массива в другой одномерный массив, начиная с заданного индекса: col 1. Copy. To(col 2, 0); Get. Enumerator() Интерфейс IEnumerable Стоит за спиной цикла For. Each Get. Length() Возвращает число измерению. элементов массива по указанному
Массивы как коллекции Чтение массива: public static void Print. Collection(string name, Array A) { Console. Write. Line(name); foreach (object item in A ) Console. Write("t {0}", item); Console. Write. Line(); } Запись массива: public static void Create. Collection(Array A) { int i=0; foreach (object item in A ) //item = rnd. Next(1, 10); //item read only A. Set. Value(rnd. Next(1, 10), i++); }
Массивы и Object public static void Print. Obj(object A) { Console. Write. Line("A. Get. Type()={0})", A. Get. Type()); if (A. Get. Type() == typeof(System. Int 32[])) { int[] temp = (int[])A; static void Main(string[] args) { for (int i = 0; i < temp. Get. Length(0); i++) col 1 = { 9, 4, 2, 8 }; int[] Console. Write("t temp[{0}]={1}", i, temp[i]); = new int[2, 2]{{2, 6}, {7, 3}}; int[, ] col 4 Console. Write. Line(); Print. Obj(col 1); } Print. Obj(col 4); else if (A. Get. Type() == typeof(System. Int 32[, ])) { } int[, ] temp = (int[, ])A; for (int i = 0; i < temp. Get. Length(0); i++) for (int j = 0; j < temp. Get. Length(1); j++) Console. Write("t temp[{0}, {1}]={2}", i, j, temp[i, j]); Console. Write. Line(); } else Console. Write. Line("Аргумент не является массивом целых"); }