Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Создание и инициализация массивов




При объявлении массива, необходимо указать тип данных, которые он содержит, и его имя. Поскольку массив – это ссылочный пользовательский тип, то его объявление помещает ссылку на массив в область видимости, но не выделяет для него память. Физически CLR создает массив при использовании ключевого слова new.

Одномерные (single) массивы. Для объявления одномерного массива необходимо указать тип элементов массива и использовать квадратные скобки [], чтобы указать, что переменная является массивом.

int[] arrayName;

Затем с помощью ключевого слова new следует указать размер массива и тем самым выделить для него память. Размер массива может быть любым целочисленным выражением.

int[] list;

list = new int[20];

Создание массива можно совместить с его объявлением:

int[] list = new int[20];

Кроме того можно инициализировать массив множеством значений, заданных в фигурных скобках {}. При этом можно не указывать количество элементов, а также полностью опустить указание на тип и ключевое слово new. В этом случае компилятор использует число элементов в множестве, чтобы определить размер массива.

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

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

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

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

Выше первые три примера инициализации допускают указание вместо типа переменной ключевого слова var, компилятор вычислит тип массива автоматически.

Если не инициализировать элементы массива, компилятор C# инициализирует их автоматически при его создании значениями по умолчанию для его базового типа с помощью ключевого слова new. Например, если массив содержит числовые данные, каждый элемент будет обнулен. Если массив содержит строки, каждый элемент будет инициализирован значением null.

Многомерные (multiple) массивы. Массив может иметь более одного измерения. Число измерений соответствует числу показателей, которые используются для идентификации отдельного элемента в массиве. Можно задать до 32 измерений массива, однако редко потребуется больше трех. Многомерный массив переменных можно объявить так же, как и одномерный, отделив измерения с помощью запятых.

int[,] table; // two-dimensional array

table = new int[10, 2];

 

int[,,] cube = new int[3, 2, 5]; // three-dimensional array

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

Type[,,... ] arrayName1 = new Type[ Size1, Size2,... ];

Type[,,... ] arrayName2 = {{element1, element2, element3},

{element4, element5, element6},

...

{elementN-2, elementN-1, element}};

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

Массивы массивов (jagged array). Многомерные массивы в C# могут быть прямоугольными, количество элементов в каждом измерении такого массива одинаково. Однако, C# также поддерживает непрямоугольные (jagged) массивы. Непрямоугольный массив это массив массивов, размеры которых могут различаться. Массивы массивов полезны для моделирования разреженных структур данных, когда не эффективно выделять память для каждого элемента, поскольку он не будет использоваться. Следует отметить, что IL содержит специальные инструкции для работы с одномерными массивами, индексированными с нуля. Поэтому массив массивов обрабатывается быстрее. В следующем примере кода показано, как объявить и инициализировать массив массивов. Следует обратить внимание, что необходимо указать размер первого массива, но не следует указывать размер массивов, которые содержатся в этом массиве. Память для каждого массива в пределах массива массивов выделяется отдельно, с помощью ключевого слова new.

Type [][] jaggedArray = new Type[10][];

jaggedArray[0] = new Type[5]; // Can specify different sizes

jaggedArray[1] = new Type[7];

...

JaggedArray[9] = new Type[21];

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

int[][,] jaggedArray = 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}}

};

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

var mixed = new[] { 1, DateTime.Now, true, false, 1.2 };

В следующих примерах показано создание неявно типизированных массивов:

var a = new[] { 1, 10, 100, 1000 }; // int[]

var b = new[] { "hello", null, "world" }; // string[]

 

// single-dimension jagged array

var c = new[]

{

new[] {1, 2, 3, 4},

new[] {5, 6, 7, 8}

};

 

// jagged array of strings

var d = new[]

{

new[] {"Luca", "Mads", "Luke", "Dinesh"},

new[] {"Karen", "Suma", "Frances"}

};

Для неявно типизированных массивов квадратные скобки в левой части оператора инициализации не используются. Кроме того, инициализация массивов массивов, как и одномерных массивов, выполняется с помощью new []. Многомерные неявно типизированные массивы не поддерживаются.

http://go.microsoft.com/fwlink/?LinkId=192899

http://go.microsoft.com/fwlink/?LinkId=192900

http://go.microsoft.com/fwlink/?LinkId=192901

http://go.microsoft.com/fwlink/?LinkId=192902






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных