Слайд 2
Массивы в С#
Массивы в С# с точки зрения
синтаксиса практически не отличаются от массивов в С, C++
и Java.
Однако внутренне массив в С# устроен как тип, производный от класса System.Array.
Формально массив определяется как набор элементов, доступ к которым производится с помощью числового индекса.
Слайд 3
Объявление массивов
Объявление одномерных массивов
[] ;
Пример:
int[] k;
При объявлении
с отложенной инициализацией сам массив не формируется, а создается
только ссылка на массив, имеющая неопределенное значение Null.
double[] x= {5.5, 6.6, 7.7}; //явная инициализация с константным массивом
int[] d= new int[5]; // создание и инициализация массива выполняется в объектном стиле с вызовом конструктора массива
Слайд 4
Массив символьных строк с 10 элементами {0, 1,…,
9}
string[] booksOnCOM;
booksOnCOM = new string[10];
Массив символьных строк с 2
//элементами {0, 1}
string[] booksOnPLl = new string[2];
Массив символьных строк из 100 //элементов {0, 1,…, 99}
string[] booksOnDotNet = new string[100];
Слайд 5
Замечание
Если массив объявляется без инициализации, то создается только
висячая ссылка со значением void.
Если инициализация выполняется конструктором,
то в динамической памяти создается сам массив, элементы которого инициализируются константами соответствующего типа (ноль для арифметики, пустая строка для строковых массивов), и ссылка связывается с этим массивом.
Если массив инициализируется константным массивом, то в памяти создается константный массив, с которым и связывается ссылка.
Слайд 6
Нумерация элементов массива идет с нуля.
Таким образом
в
int[] k = new int [3];
начальный элемент массива
– это k[0], а последний – k[2].
Элемента k[3]нет.
Слайд 7
//Задаем элементы массива
k[0]=-5;
k[1]=4;
k[2]=55;
Слайд 9
Массив из случайных элементов
Слайд 11
//Выводим третий элемент массива
Console.WriteLine(k[2].ToString());
Слайд 12
Вывод массива
foreach (int i in k)
{
Console.WriteLine(i.ToString());
}
}
Слайд 13
String[] a = { "red", "GREEN", "YELLOW", "BLUE",
"purple", "black", "orange" };
Слайд 14
Важное различие между массивами C++ и С#
В С#
элементам массива автоматически присваиваются значения по умолчанию в зависимости
от используемого для них типа данных.
Например, для массива целых чисел всем элементам будет изначально присвоено значение 0, для массива объектов — значение NULL и т. д.
Слайд 15
Многомерные массивы
Помимо массивов с одним измерением в С#
поддерживаются также две основные разновидности многомерных массивов.
Первую разновидность многомерных
массивов иногда называют “прямоугольным массивом”. Такой тип массива образуется простым сложением нескольких измерений. При этом все строки и столбцы в данном массиве будут одинаковой длины.
Слайд 16
// Прямоугольный многомерный массив
int[] myMatrix;
myMatrix = new int[6,
6];
// Заполняем массив 6 на 6
for (int i =
0; i < 6; i++)
for (int j = 0; j < 6; j++)
myMatrix[i, j] = i*j;
// Выводим элементы многомерного массива на //системную консоль
for (int i = 0 ; i < 6; i++)
{
for (int j = 0; j < 6; j++)
{
Console.Write(myMatrix[i, j] +"\t");
}
Console. WriteLine();
}
Слайд 18
многомерные массивы
int[,] k = new int [2,3];
Обратите внимание, что пара квадратных скобок только одна.
Естественно,
что в нашем примере у массива 6 (=2*3) элементов (k[0,0] – первый, k[1,2] – последний).
Слайд 19
пример трехмерного массива:
int[,,] k = new int [10,10,10];
Слайд 20
А вот так можно сразу инициализировать многомерные
массивы:
int[,] k = {{2,-2},{3,-22},{0,4}};
Слайд 22
Функции класса System.Array
Массивы в C# основаны на классе
System.Array. У этого класса, как и у любого другого,
есть разные полезные методы.
Слайд 23
Таблица
Член класса Назначение
BinarySearch() Этот статический метод
можно использовать только тогда, когда
массив реали-
зует интерфейс IComparer, в этом случае метод позволяет
найти элемент массива.
Clear() Этот статический метод позволяет очистить диапазон
Слайд 24
элементов (числовые элементы приобретут
значения 0, а ссылки на
на объекты – null)
CopyTo() Используется для копирования элементов из исходного массива в массив
назначения
GetEnumerato() Возвращает интерфейс IEnumerator для указанного массива.
Слайд 25
GetLengt().Lenght Метод GetLength() используется для
определения количества элементов в указанном
измерении массива. Length - это свойство только для чтения, с помощью которого можно получить количество элементов массива
GetLowerBound() Эти методы используются
GetUpperBound() для определения верхней
и нижней границы
Слайд 26
выбранного вами измерения массива.
GetValue()
Возвращает или
SetValue() устанавливает значение
указанного индекса для массива.
Этот метод перегружен для нормальной работы как с одномерными, так и с многомерными массивами
Reverse() Этот статический метод позволяет расставить
Слайд 27
элементы одномерного
массива в обратном
порядке.
Sort() Сортирует одномерный массив встроенных типов данных. Если элементы
массива поддерживают интерфейс IComparer, то с помощью этого метода вы сможете производить сортировку и ваших пользовательских типов
данных.
Слайд 28
BinarySearch(Array, Object)
Выполняет поиск заданного элемента во всем отсортированном
одномерном массиве Array, используя для этого интерфейс IComparable, реализуемый
каждым элементом массива Array и заданным объектом.
Слайд 29
Clear
Задает диапазон элементов массива Array равным нулю, false
или Nothing в зависимости от типа элемента.
Array.Clear(num, 0,
5); Console.WriteLine("Обнуленный массив"); foreach (int i in num)
{ Console.WriteLine(i.ToString()); }
Слайд 30
Copy(Array, Array, Int32)
Копирует диапазон элементов из массива Array,
начиная с первого элемента, и вставляет его в другой
массив Array, также начиная с первого элемента. Длина задается как 32-разрядное целое число.
Слайд 31
Find(Of T)
Выполняет поиск элемента, удовлетворяющего условиям указанного предиката,
и возвращает первое найденное вхождение в пределах всего списка
Array.
Слайд 32
IndexOf
Статический метод IndexOf предназначенный для поиска элемента в
массиве
int k=-5;
Console.WriteLine("Число {0}
находится на {1} месте.", k, Array.IndexOf(num, k));
Этот метод возвращает индекс искомого элемента (нумерация с нуля). Если такого элемента нет, то возвращается -1.
Слайд 34
FindAll(Of T)
Извлекает все элементы, удовлетворяющие условиям указанного предиката.
Слайд 35
Resize(Of T)
Изменяет количество элементов в массиве до указанной
величины.
Слайд 36
Reverse(Array)
Изменяет порядок элементов во всем одномерном массиве Array
на обратный.
Console.WriteLine("Перевернутый массив"); Array.Reverse(num);
foreach (int i in num)
{ Console.WriteLine(i.ToString()); }
Слайд 37
Sort(Array)
Сортирует элементы во всем одномерном массиве Array, используя
реализацию интерфейса IComparable каждого элемента массива Array.
Array.Sort(num);
Console.WriteLine("Отсортированный массив"); foreach (int i in num)
{ Console.WriteLine(i.ToString()); }