- •13) Создание объектов. Понятие ссылки.
- •14) Массивы: одномерные, многомерные, невыровненые, массивы объектов.
- •Инициализация
- •Инициализация в цикле программы
- •Класс System.Array
- •15) Строковый тип данных string.
- •16) Методы: назначение, определение, вызов.
- •17) Возврат методом значений. Тип void.
- •18) Рекурсивные методы.
- •19) Перегрузка методов.
- •20) Конструкторы. Назначение, определение, вызов.
- •Вызов конструктора из других конструкторов
- •Конструкторы производных классов
- •21) Деструкторы. Назначение, определение, вызов.
- •Деструкторы Dispose() и Close()
- •22) Способы передачи параметров методу.
- •23) Статические компоненты классов.
- •24) Ссылка this.
- •25) Копирование объектов.
Инициализация
Многомерные массивы можно создавать, настраивать и инициализировать в одном операторе любым из следующих методов.
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.