Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИДПО_ИИИС / Лекция 6.docx
Скачиваний:
68
Добавлен:
19.05.2015
Размер:
126.8 Кб
Скачать

Массивы в c#

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

Следует помнить, что размер массива задается при его создании, но не при объявлении. Если мы создаем массив фиксированного размера, то использование ключевого слова new обязательно. Если при объявлении мы массив сразу инициализируем, то new необязательно - размерность массива определит компилятор. Индексация элементов массива начинается с нуля.

В C++ список инициализации может по количеству элементов не соответствовать заказанной размерности массива. В этом случае компилятор игнорирует лишние элемемнты списка или часть элементов оставляет неинициализированными. В C# заказанная размерность массива должна строго соответствовать количеству элементовв списке инициализации, иначе компилятор выдаст ошибку.

Одномерные массивы

using System;

namespace Test

{

class Test

{

//***************************************

private void DisplayString(string subTitle, string[] list)

{

Console.WriteLine(subTitle);

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

{

Console.WriteLine("{0}) {1}", i, list[i]);

}

}

//***************************************

private void DisplayInt(string subTitle, int[] list)

{

Console.WriteLine(subTitle);

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

{

Console.WriteLine("{0}) {1}", i, list[i]);

}

}

//***************************************

static void Main()

{

string title = "************************

********************\n"

+ "\tОдномерные массивы:\n"

+ "*****************************

***************\n";

Console.WriteLine(title);

// Создадим объект для применения методов

// DisplayString() и DisplayInt()

Test test = new Test();

// Создадим ссылочную переменную типа массива с адресом null

string[] str1;

// Запросим память у системы для 10 элементов и запомним адрес.

str1 = new string[10];

test.DisplayString( "Строковый массив без

инициализации элементов.\n"

+ "Строковые элементы по умолчанию\n"

+ "инициализируются пустыми строками."

, str1);

// Поэлементная инициализация с использованием индексов

// и той же ссылки с новым адресом.

// Адрес старого массива потерян в куче. Утерянную

// память системе вернет сборщик мусора Garbare Collector

str1 = new string[7];

str1[0] = "Колян";

str1[1] = "Вован";

str1[2] = "Иван";

str1[3] = "Болван";

str1[4] = "Чурбан";

test.DisplayString("\nПоэлементная

инициализация с использованием индекса.\n"

+ "Старая адресуемая память утеряна

безвозвратно:", str1);

// Создадим ссылочную переменную и сразу инциализируем ее адресом.

int[] int1 = new int[5];

test.DisplayInt("\n"

+ "Числовой массив фиксированного размера.\n"

+ "Элементы по умолчанию инициализируются нулями."

, int1);

// Создаем ссылку на массив. Инициализируем ее адресом, запросив

// память с фиксированным количеством элементов,

// и сразу инициализируем элементы массива.

// Размер списка инициализации должен строго соответствовать

// запрошенной размерности массива.

int[] int2 = new int[5] {11, 22, 33, 44, 55};

test.DisplayInt(

"\n"

+ "Запрошенный размер массива должен\n"

+ "строго соответствовать списку инициализации."

, int2);

// Создаем ссылку на массив. Инициализируем ее адресом, запросив

// память без указания количества элементов. Количество элементов

// определит компилятор при инициализации списком.

// Используем оператор new.

int[] int3 = new int[] {11, 22, 33, 44, 55, 66, 77};

test.DisplayInt(

"\n"

+ "Размер по списку инициализации, \nпамять

запрашивается по new"

+ ":"

, int3);

// Создаем ссылку на массив. Инициализируем ее адресом, запросив

// память без указания количества элементов. Количество элементов

// определит компилятор при инициализации списком.

// Оператор new не используем.

int[] int4 = {11, 22, 33, 44, 55, 66, 77, 88, 99};

test.DisplayInt(

"\n"

+ "Размер по списку инициализации, \nпамять

запрашивается без new"

+ ":"

, int4);

while(true);

}

}

}

Листинг 20.40 . Одномерные массивы

Результат выполнения примера

********************************************

Одномерные массивы:

********************************************

Строковый массив без инициализации элементов.

Строковые элементы по умолчанию

инициализируются пустыми строками.

0)

1)

2)

3)

4)

5)

6)

7)

8)

9)

Поэлементная инициализация с использованием индекса.

Старая адресуемая память утеряна безвозвратно:

0) Колян

1) Вован

2) Иван

3) Болван

4) Чурбан

5)

6)

Числовой массив фиксированного размера.

Элементы по умолчанию инициализируются нулями.

0) 0

1) 0

2) 0

3) 0

4) 0

Запрошенный размер массива должен

строго соответствовать списку инициализации.

0) 11

1) 22

2) 33

3) 44

4) 55

Размер по списку инициализации,

память запрашивается по new:

0) 11

1) 22

2) 33

3) 44

4) 55

5) 66

6) 77

Размер по списку инициализации,

память запрашивается без new:

0) 11

1) 22

2) 33

3) 44

4) 55

5) 66

6) 77

7) 88

8) 99

Соседние файлы в папке ИДПО_ИИИС