Все классы-массивы являются потомками класса Array из библиотеки FCL (статическом компоненте Framework.Net.) Помимо наследования свойств и методов класса Object и вышеперечисленных интерфейсов, класс Array имеет довольно большое число собственных методов и свойств. Благодаря такому мощному родителю, над массивами определены самые разнообразные операции - копирование, поиск, обращение, сортировка, получение различных характеристик. Массивы можно рассматривать как коллекции и устраивать циклы foreach для перебора всех элементов.
Таблица 1.3 - Свойства класса Array
Свойство | Родитель | Описание |
IsFixedSize | Интерфейс IList | True, если массив статический |
Length | Число элементов массива | |
Rank | Размерность массива |
Таблица 1.4 - Статические методы класса Array
Метод | Описание |
BinarySearch() | Двоичный поиск. |
Clear() | Выполняет начальную инициализацию элементов. В зависимости от типа элементов устанавливает значение 0 для арифметического типа, false - для логического типа, Null для ссылок, "" - для строк. |
CopyTo() | Копирование части или всего массива в другой массив. Описание и примеры даны в тексте |
GetLength() | Используется для определения количества элементов в указанном измерении массива |
IndexOf() | Индекс первого вхождения образца в массив. Описание и примеры даны в тексте |
LastIndexOf() | Индекс последнего вхождения образца в массив. Описание и примеры даны в тексте |
Reverse() | Обращение одномерного массива. |
Sort() | Сортировка одномерного массива встроенных типов данных. |
GetValue() SetValue() | Возвращает или устанавливает значение указанного индекса для массива. |
GetUpperBound() GetLowerBound() | Используется для определения нижней или верхней границы выбранного измерения массива. |
|
|
// Программа 1. Применение методов класса Array
public static int Main(string[] args) {
string[]firstNames={"Саша", "Маша", "Олег", "Света", "Игорь"};
Console.WriteLine("Here is the array:");
for(int i=0; i< firstNames.Length; i++)
Console.WriteLine(firstNames[i]+"\t");
Console.WriteLine("\n");
Array.Reverse(firstNames);
for(int i=0; i< firstNames.Length; i++)
Console.WriteLine(firstNames[i]+"\t");
Console.WriteLine("\n");
Console.WriteLine("Cleared out all but one…");
Array.Clear(firstNames,1,4);
for(int i=0; i< firstNames.Length; i++)
Console.WriteLine(firstNames[i]+"\t\n");
return 0;
}
В следующей процедуре, формальный аргумент которой будет принадлежать родителю всех классов-массивов, можно передавать массив любого класса в качестве фактического аргумента:
// Программа 2. Принение методов класса Array
public static void PrintAr(string name, Array A) {
Console.WriteLine(name);
switch (A.Rank) {
case 1:
for(int i = 0; i<A.GetLength(0);i++)
Console.Write("\t" + name + "[{0}]={1}", i, A.GetValue(i));
Console.WriteLine();
break;
case 2:
for(int i = 0; i<A.GetLength(0);i++) {
for(int j = 0; j<A.GetLength(1);j++)
Console.Write("\t" + name + "[{0},{1}]={2}", i,j, A.GetValue(i,j));
|
|
Console.WriteLine();
}
break;
default: break;
}}
Примеры различных операций, доступных при работе с массивами, благодаря наследованию от класса Array:
// Программа 3. Применение методов класса Array
public void TestCollection() { //операции над массивами
int nc = 7;
int[] col1 = new int[nc], col2 = new int[nc];
double[] col3 = new double[nc];
int[,] col4 = new int[2,2];