Читайте также:
|
|
Массив массивов – это массив, элементы которого сами являются массивами. Элементы массива массивов могут иметь различные размеры и измерения. Массивы массивов иногда также называются "невыровненными массивами". В следующих примерах показано, как выполняется объявление, инициализация и доступ к массивам массивов.
Ниже показано объявление одномерного массива, включающего три элемента, каждый из которых является одномерным массивом целых чисел.
C#
int[][] jaggedArray = new int[3][];
Перед использованием jaggedArray его элементы нужно инициализировать. Сделать это можно следующим образом.
C#
jaggedArray[0] = new int[5];
jaggedArray[1] = new int[4];
jaggedArray[2] = new int[2];
Каждый элемент представляет собой одномерный массив целых чисел. Первый элемент массива состоит из пяти целях чисел, второй – из четырех и третий – из двух.
Для заполнения элементов массива значениями можно также использовать инициализаторы, при этом размер массива знать не требуется. Пример.
C#
jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 };
jaggedArray[1] = new int[] { 0, 2, 4, 6 };
jaggedArray[2] = new int[] { 11, 22 };
Также массив можно инициализировать путем объявления.
C#
int[][] jaggedArray2 = new int[][]
{
new int[] {1,3,5,7,9},
new int[] {0,2,4,6},
new int[] {11,22}
};
Также можно использовать сокращенную форму. Обратите внимание, что при инициализации элементов оператор new опускать нельзя, так как инициализации по умолчанию для этих элементов не существует.
C#
int[][] jaggedArray3 =
{
new int[] {1,3,5,7,9},
new int[] {0,2,4,6},
new int[] {11,22}
};
Невыровненный массив является массивом массивов, и поэтому его элементы являются ссылочными типами и инициализируются значением null.
Доступ к отдельным элементам массива выполняется следующим образом.
C#
// 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;
Массивы массивов можно смешивать с многомерными массивами. Ниже показано объявление и инициализация одномерного массива массивов, состоящего из двумерных элементов различного размера.
C#
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).
C#
System.Console.Write("{0}", jaggedArray4[0][1, 0]);
Метод Length возвращает число массивов, содержащихся в массиве массивов. Например, если объявить предыдущий массив, мы получим следующее.
C#
System.Console.WriteLine(jaggedArray4.Length);
возвращает значение 3.
Строки
Тип string представляет последовательность из нуля или более символов в кодировке Юникод. Тип string — это псевдоним для типа String платформы.NET Framework.
Несмотря на то, что тип string является ссылочным типом, операторы равенства (== и !=) определены для сравнения значений объектов типа string, а не ссылок. Это упрощает проверку равенства строк. Например:
C#
string a = "hello";
string b = "h";
// Append to contents of 'b'
b += "ello";
Console.WriteLine(a == b);
Console.WriteLine((object)a == (object)b);
В этом примере отображается "True", а затем "False", поскольку содержимое строк одинаково, но a и b не ссылаются на один и тот же экземпляр строки.
Оператор + служит для объединения строк.
C#
string a = "good " + "morning";
В данном примере создается строковый объект, содержащий текст "good morning".
Строки являются неизменяемыми: содержимое строкового объекта невозможно изменить после создания объекта, хотя из-за синтаксиса изменения кажутся возможными. Например, при написании этого кода компилятор на самом деле создает новый строковый объект для новой последовательности знаков, и этот новый объект получает значение "b". Затем строку "h" можно применять для сборки мусора.
C#
string b = "h";
b += "ello";
Оператор [] служит для доступа только для чтения к отдельным знакам объекта string.
C#
string str = "test";
char x = str[2]; // x = 's';
Строковые литералы имеют тип string и могут быть написаны в двух формах: в кавычках и в кавычках с @. Строковые литералы в кавычках заключены в двойные кавычки (").
C#
"good morning" // a string literal
Строковые литералы могут содержать любые символьные литералы. Escape-последовательности также поддерживаются. В следующем примере используется escape-последовательность \\ для обратной косой черты, \u0066 для буквы "f" и \n для перехода на новую строку.
string a = "\\\u0066\n";
Console.WriteLine(a);
Примечание
Escape-код \u dddd (где dddd — четырехзначное число) представляет знак Юникода U+ dddd. Также распознаются восьмизначные escape-коды Юникода: \Udddddddd.
Литералы из точных строк начинаются со знака @ и заключены в двойные кавычки. Например:
C#
@"good morning" // a string literal
Преимущество точных строк заключается в том, что escape-последовательности не обрабатывается, благодаря чему можно удобно написать, например, полное имя и путь файла:
C#
@"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt"
Чтобы включить знак двойной кавычки в строку в кавычках с @, следует использовать знак кавычек дважды:
C#
@"""Ahoy!"" cried the captain." // "Ahoy!" cried the captain.
Знак @ также можно применять для использования указанных идентификаторов (/reference), являющихся ключевыми словами C#.
Дата добавления: 2015-02-16; просмотров: 23 | Поможем написать вашу работу | Нарушение авторских прав |