Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика ответы.docx
Скачиваний:
56
Добавлен:
10.05.2015
Размер:
270.28 Кб
Скачать

Инициализация

Многомерные массивы можно создавать, настраивать и инициализировать в одном операторе любым из следующих методов.

int[,] arr4 = new int [2,3] { {1,2,3}, {4,5,6} };

int[,] arr5 = new int [,] { {1,2,3}, {4,5,6} };

int[,] arr6 = { {1,2,3}, {4,5,6} };

Инициализация в цикле программы

Все элементы массива могут быть инициализированы посредством вложенного цикла, как показано ниже.

int[,] arr7 = new int[5,4];

for(int i=0; i<5; i++)

{

for(int j=0; i<4; j++)

{

arr7[i,j] = 0; // initialize each element to zero

}

}

Класс System.Array

В платформе .NET Framework массивы реализуются как экземпляры класса Array. Этот класс обеспечивает несколько ценных методов, например Sort и Reverse.

Следующий пример демонстрирует, насколько просто работать с этими методами. Сначала меняется порядок элементов в массиве с помощью метода Reverse, затем элементы сортируются методом Sort.

class ArrayMethods

{

static void Main()

{

// Create a string array of size 5:

string[] employeeNames = new string[5];

// Read 5 employee names from user:

System.Console.WriteLine("Enter five employee names:");

for(int i=0; i<employeeNames.Length; i++)

{

employeeNames[i]= System.Console.ReadLine();

}

// Print the array in original order:

System.Console.WriteLine("\nArray in Original Order:");

foreach(string employeeName in employeeNames)

{

System.Console.Write("{0} ", employeeName);

}

// Reverse the array:

System.Array.Reverse(employeeNames);

// Print the array in reverse order:

System.Console.WriteLine("\n\nArray in Reverse Order:");

foreach(string employeeName in employeeNames)

{

System.Console.Write("{0} ", employeeName);

}

// Sort the array:

System.Array.Sort(employeeNames);

// Print the array in sorted order:

System.Console.WriteLine("\n\nArray in Sorted Order:");

foreach(string employeeName in employeeNames)

{

System.Console.Write("{0} ", employeeName);

}

}

}

Результат

Enter five employee names:

Luca

Angie

Brian

Kent

Beatriz

Array in Original Order:

Luca Angie Brian Kent Beatriz

Array in Reverse Order:

Beatriz Kent Brian Angie Luca

Array in Sorted Order:

Angie Beatriz Brian Kent Luca

Невыровненный массив-это просто массив массивов

Элементы массива массивов могут иметь различные размеры и измерения. Массивы массивов иногда также называются "невыровненными массивами". В следующих примерах показано, как выполняется объявление, инициализация и доступ к массивам массивов.

Ниже показано объявление одномерного массива, включающего три элемента, каждый из которых является одномерным массивом целых чисел.

int[][] jaggedArray = new int[3][];

Перед использованием jaggedArray его элементы нужно инициализировать. Сделать это можно следующим образом.

jaggedArray[0] = new int[5];

jaggedArray[1] = new int[4];

jaggedArray[2] = new int[2];

Каждый элемент представляет собой одномерный массив целых чисел. Первый элемент массива состоит из пяти целях чисел, второй — из четырех и третий — из двух.

Для заполнения элементов массива значениями можно также использовать инициализаторы, при этом размер массива знать не требуется. Примеры.

jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 };

jaggedArray[1] = new int[] { 0, 2, 4, 6 };

jaggedArray[2] = new int[] { 11, 22 };

Также массив можно инициализировать путем объявления

int[][] jaggedArray2 = new int[][]

{

new int[] {1,3,5,7,9},

new int[] {0,2,4,6},

new int[] {11,22}

};

Также можно использовать сокращенную форму. Обратите внимание, что при инициализации элементов оператор new опускать нельзя, так как инициализации по умолчанию для этих элементов не существует.

int[][] jaggedArray3 =

{

new int[] {1,3,5,7,9},

new int[] {0,2,4,6},

new int[] {11,22}

};

Невыровненный массив является массивом массивов и поэтому его элементы являются ссылочными типами и инициализируются значением null.

Доступ к отдельным элементам массива выполняется следующим образом.

// Assign 77 to the second element ([1]) of the first array ([0]):

jaggedArray3[0][1] = 77;

// Assign 88 to the second element ([1]) of the third array ([2]):

jaggedArray3[2][1] = 88;

Массивы массивов можно смешивать с многомерными массивами. Ниже показано объявление и инициализация одномерного массива массивов, состоящего из трех двумерных элементов различного размера. 

int[][,] jaggedArray4 = new int[3][,]

{

new int[,] { {1,3}, {5,7} },

new int[,] { {0,2}, {4,6}, {8,10} },

new int[,] { {11,22}, {99,88}, {0,9} }

};

Доступ к отдельным элементам выполняется как показано в примере ниже, где отображено значение элемента [1,0] первого массива (значение 5).

System.Console.Write("{0}", jaggedArray4[0][1, 0]);

Метод Length возвращает число массивов, содержащихся в массиве массивов. Например, если объявить предыдущий массив, мы получим следующее.

System.Console.WriteLine(jaggedArray4.Length);

возвращает значение 3.

Массивы объектов.

В языке C# массивы являются объектами, а не просто смежными адресуемыми областями памяти, как в C и C++. Array является абстрактным базовым типом для всех типов массивов. Можно использовать свойства и другие члены класса, которые имеет Array. В примере используется свойство Length для получения длины массива. В следующем коде длина массива numbers, равная 5, присваивается переменной lengthOfNumbers:

int[] numbers = { 1, 2, 3, 4, 5 };

int lengthOfNumbers = numbers.Length;

Класс System.Array позволяет использовать много других полезных методов и свойств для выполнения сортировки, поиска и копирования массивов.

Пример

В этом примере свойство Rank используется для отображения числа измерений массива.

class TestArraysClass

{

static void Main()

{

// Declare and initialize an array:

int[,] theArray = new int[5, 10];

System.Console.WriteLine("The array has {0} dimensions.", theArray.Rank);

}

}

// Output: The array has 2 dimensions.