- •Windows-проект на языке с#
- •Константы
- •Организация консольного ввода-вывода в c#
- •Методы классов в c#
- •Модификаторы для параметров методов
- •Массивы в c#
- •Одномерные массивы
- •Многомерные массивы
- •Базовый класс System.Array
- •Работа со строками в c#
- •Управляющие последовательности и вывод служебных символов
Многомерные массивы
Многомерные массивы могут иметь любое количество измерений (не путать с размерностью массива), два измерения - двумерными, три измерения - трехмерные, ..., N измерений - N _мерные. Наибольшее распространение получили массивы, имеющие два измерения - двумерные многомерные массивы. Многомерные массивы (в том числе двумерные) бывают двух типов:
Прямоугольные массивы
"Ломаные" (jagged) массивы
Ниже рассмотрим примеры, касающиеся только двумерных массивов.
using System;
namespace Test
{
class Test
{
static void Main()
{
string title = "*****************************
***************\n"
+ "\tДвумерные массивы:\n"
+ "****************************
****************\n";
Console.WriteLine(title);
//*********************************************************
// Создаем ссылку типа int на двумерный массив
// Используются для измерений общие скобки
int[,] array1;
// Запросим память у системы для
// Для фиксированного количества элементов
array1 = new int[6,5];
Console.WriteLine("Прямоугольный массив [6,5],
полученный по\n"
+ "синтаксису массива прямоугольного типа:");
// Заполним и выведем массив с поэлементной индексацией
// Метод GetLength() используется для определения
// количества элементов в указанном измерении массива
for(int i = 0; i < array1.GetLength(0); i++)
{
for(int j = 0; j < array1.GetLength(1); j++)
{
array1[i,j] = i * j;
Console.Write(array1[i,j] + "\t");
}
Console.WriteLine();// На новую строку экрана
}
//*********************************************************
// Используются для измерений индивидуальные скобки
int[][] array2;
// Запросим память у системы для
// Для неопределенного количества элементов
// по второму измерению
array2 = new int[6][];
Console.WriteLine("\n\nПрямоугольный массив [6][5],
полученный по\n"
+ "синтаксису массива ломаного типа:");
// Вначале запросим память для второго измерения
// Используются для измерения индивидуальные скобки
for(int i = 0; i < array2.Length; i++)
array2[i] = new int[5];
// Заполним и выведем массив с поэлементной индексацией
for(int i = 0; i < 6; i++)
{
for(int j = 0; j < 5; j++)
{
array2[i][j] = i * j;
Console.Write(array2[i][j] + "\t");
}
Console.WriteLine();// На новую строку экрана
}
//*********************************************************
// Используются для измерений индивидуальные скобки
// Запросим память у системы для
// Для неопределенного количества элементов
// по второму измерению
array2 = new int[6][]; // Используем старую ссылку
// массива ломаного типа, старую ссылку
// массива прямоугольного типа применять нельзя
Console.WriteLine("\n\nМассив ломаного
типа [6][]:");
// Вначале запросим память для второго измерения
// Используются для измерения индивидуальные скобки
for(int i = 0; i < array2.Length; i++)
array2[i] = new int[i + 2];
// Заполним и выведем массив с поэлементной индексацией
for(int i = 0; i < array2.Length; i++)
{
for(int j = 0; j < array2[i].Length; j++)
{
array2[i][j] = i * j;
Console.Write(array2[i][j] + "\t");
}
Console.WriteLine();// На новую строку экрана
}
while(true);
}
}
}
Листинг 20.41 . Двумерные массивы
Результат выполнения примера
********************************************
Двумерные массивы:
********************************************
Прямоугольный массив [6,5], полученный по
синтаксису массива прямоугольного типа:
0 0 0 0 0
0 1 2 3 4
0 2 4 6 8
0 3 6 9 12
0 4 8 12 16
0 5 10 15 20
Прямоугольный массив [6][5], полученный по
синтаксису массива ломаного типа:
0 0 0 0 0
0 1 2 3 4
0 2 4 6 8
0 3 6 9 12
0 4 8 12 16
0 5 10 15 20
Массив ломаного типа [6][]:
0 0
0 1 2
0 2 4 6
0 3 6 9 12
0 4 8 12 16 20
0 5 10 15 20 25 30