Прямокутний масив має більше одного вимірювання. Найчастіше в програмах використовуються двовимірні масиви. Варіанти опису двовимірного масиву:
тип[,] ім’я;
тип[,] ім’я = new тип [ розм _1, розм_2 ];
тип[,] ім’я = { список ініціалізаторів };
тип[,] ім’я = new тип [,] { список ініціалізаторів };
тип[,] ім’я = new тип [ розм_1, розм_2 ] {список ініціалізаторів};
Приклади описів (один приклад для кожного варіанту опису):
int [ , ] a; //1 елементів немає
int [ , ] b = new int [2,3]; //2 елементи дорівнюють 0
int [ , ] с = {{1, 2, 3}, {4, 5, 6}}; //3 new мається на увазі
int [ , ] d = new int[ , ] {{1, 2, 3}, {4, 5. 6}}; //4 розмірність обчислюється
int [ , ] e = new int[2,3] {{1, 2, 3}, {4, 5, 6}}; //5 надмірний опис
Якщо список ініціалізації не заданий, розмірності можуть бути не тільки константами, але і виразами типу, що приводиться до цілого. До елементу двовимірного масиву звертаються, указуючи номери рядка і стовпця, на перетині яких він розташований, наприклад:
а[1 , 4] b[i , j ] b[j, i]
Як приклад розглянемо програму на лістингу 6.2, яка для цілочисельної матриці визначає середнє арифметичне її елементів і кількість додатних елементів в кожному рядку.
Лістинг 6.2. Робота з двовимірним масивом
using System;
namespace ConsoleApplication1
{
class Classl
{
static void Main( )
{
const int n = 3, m = 4;
int i,j;
int[,] a = new int[n, m]
{
{ 2,-2, 8, 9},
{- 4,- 5, 6,- 2},
{ 7, 0, 1, 1}
};
Console.WriteLine( "Початковий масив:");
for (i = 0; i < n; i ++)
{
for (j = 0; j < m; j ++)
Console.Write( "\t" + a[i, j]);
Console.WriteLine( );
}
double sum = 0;
int pel;
for (i = 0; i < n; i ++)
{
pel = 0;
for (j = 0; j < m; j ++)
{
sum += a[i, j] ;
if ( a[i, j] > 0 )pel ++;
}
Console.WriteLine( "У рядку {0} {1} додат. елементів ", i, pel);
}
Console.WriteLine("Серед. ариф. значення елементів = " +sum/m/n);
}
}
}