Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Двумерный целочисленный массив

Многомерные массивы

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

Так для одномерного массива синтаксис создания будет таким

тип[] имя_массива = new тип[размер];

Например, зарезервировать память под 10 элементов целого типа можно так

int[] array = new int[10];

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

Если массив объявляется как поле класса, то все элементы по умолчанию приобретают ближайшее по типу значение (для числового - нуль, для строкового - пусто, для булева - false, для ссылочного - null). Если массив объявляется внутри метода как локальная переменная, то его перед использованием нужно явно инициализировать.

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

Одну и ту же ссылку на массив можно использовать многократно при создании нескольких совместимых с ее типом массивов. В таком случае адресация прежнего массива будет утеряна. Например

int[] array = new int[10];

............

array = new int[20];

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

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

Можно создать массив фиксированной размерности и сразу его инициализировать. Тогда размер списка инициализации должен строго соответствовать заказанной размерности массива. Например

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

Допустим и такой синтаксис - без указания размерности, но с инициализацией

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

Можно вначале создать массив, а потом поэлементно присвоить ему значения. И тоже нужно следить, чтобы не выйти за пределы установленной размерности массива.

int[] array = new int[5];

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

array[i] = i;

Массивы большего числа измерений имеют синтаксис, схожий с одномерными массивами.

Приведем примеры

// Файл Program.cs

using System;

 

class MyClass

{

public MyClass()

{

// Настройка консоли

Console.Title = "Двумерный массив 5x4";

Console.ForegroundColor = ConsoleColor.White;

Console.CursorVisible = false;

 

// Работа с двумерным массивом

const int ROWS = 5, COLUMNS = 4;// Границы

int[,] array = new int[ROWS, COLUMNS];// Создание

for (int count = 0; count < array.Length; count++)

array[count / COLUMNS, count % COLUMNS] = count;// Наполнение

for (int row = 0; row < ROWS; row++)// Перебор строк

{

for (int col = 0; col < COLUMNS; col++)// Перебор столбцов

{

string str = String.Format("a[{0},{1}]={2, -6}",

row, col, array[row, col]);

Console.Write(str);

}

Console.WriteLine();// Новая строка

}

}

}

 

class Program

{

static void Main()

{

new MyClass();// Чтобы сработал конструктор

// Для задержки консольного окна

Console.ReadLine();

}

}

 

Размеры двумерного массива могут определяться компилятором автоматически по списку инициализации

// Файл Program.cs

using System;

 

class MyClass

{

public MyClass()

{

// Настройка консоли

Console.Title = "Двумерный массив со списком инициализации";

Console.ForegroundColor = ConsoleColor.White;

Console.CursorVisible = false;

 

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

int[,] array = {

{0, 1, 2, 3},

{4, 5, 6, 7},

{8, 9, 10, 11},

{12, 13, 14, 15},

{16, 17, 18, 19}

};

 

const int ROWS = 5, COLUMNS = 4;// Границы для печати

 

for (int count = 0; count < array.Length; count++)

array[count / COLUMNS, count % COLUMNS] = count;// Наполнение

for (int row = 0; row < ROWS; row++)// Перебор строк

{

for (int col = 0; col < COLUMNS; col++)// Перебор столбцов

{

string str = String.Format("a[{0},{1}]={2, -6}",

row, col, array[row, col]);

Console.Write(str);

}

Console.WriteLine();// Новая строка

}

}

}

 

class Program

{

static void Main()

{

new MyClass();// Чтобы сработал конструктор

// Для задержки консольного окна

Console.ReadLine();

}

}

 

<== предыдущая лекция | следующая лекция ==>
Представление разреженных матриц методом связанных структур | Трехмерные массивы
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 429; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.015 сек.