тип[] имя = new тип [размерность]{инициализаторы};
Примеры описания одномерных массивов:
int [] a; //элементов нет
int [] b=new int [4]; //элементы равны 0
int [] c={1,2,3,4}; //new подразумевается
int [] d=new int[] {1,2,3,4}; //размерность вычисляется
int [] e=new int [4] {1,2,3,4}; //избыточное описание
Для массива а описана ссылка на массив, а память под элементы не выделена (массив не создан).
Массив b будет содержать 4 элемента, которые по умолчанию равны 0.
Для массива с опущен оператор выделения памяти new, который подразумевается по умолчанию.
Для массива d не задана размерность, но он инициализирован, поэтому размерность количество элементов вычисляется.
Для массива е указана и размерность и элементы инициализированы, размерность - константа!
Пример выполнения операций с одномерным массивом
using System;
namespace ConsoleApplication1
{
class Class1
{
static void Main()
{
const int n=6;
int [] a= new int[n] {3,12,5,-9,8,-4};
Console.WriteLine(“Исходный массив: ”);
for (int i=0;i<n;++i)
Console.Write(“\t” +a[i]);
Console.WriteLine();
int s=0,k=0;
for (int i=0;i<n;++i)
if (a[i]<0)
{
s+=a[i];
++k;
}
Console.WriteLine(“Сумма отрицательных ”+s);
Console.WriteLine(“Количество отрицательных ”+k);
}}}
Прямоугольный массив имеет более одного измерения. В чем особенность объявления многомерного (прямоугольного) массива? Как в типе указать размерность массива? Это делается достаточно просто, за счет использования запятых.
Объявление многомерного массива в общем случае:
<тип>[, ... ,] <идентификаторы>;
Число запятых, увеличенное на единицу, и задает размерность массива.
Примеры описания двумерных массивов:
int [,] a; //элементов нет
int [,] b=new int [2,3]; //элементы равны 0
int [,] c={{1,2,3},{4,5,6}}; //new подразумевается
int [,] d=new int[,]{{1,2,3},{4,5,6}}; //размерность вычисляется
int [,] e=new int [2,3] {{1,2,3},{4,5,6}}; //избыточное описание
Если список инициализации не задан, размерности могут быть не только константами, но и выражениями типа, приводимого к целому.
К элементу двумерного массива обращаются, указывая номер строки и столбца, на пересечении которых он расположен:
a[1,4] - элемент второй строки и пятого столбца!
b[i,j] - элемент i-ой строки и j-ого столбца!
Пример выполнения операций с двумерным массивом
using System;
namespace ConsoleApplication1
{
class Class1
{
static void Main()
{
const int m=3,n=3;
int [,] a= new int[m,n]
{
{1,1,1},
{0,0,0},
{3,3,3}
};
int [,] b= new int[m,n]
{
{1,2,3},
{4,5,6},
{7,8,9}
};
int [,] c= new int[m,n];
Console.WriteLine(“Исходный массив a: ”);
for (int i=0;i<m;++i)
{
for (int j=0;j<n;++j)
Console.Write(“\t” +a[i,j]);
Console.WriteLine();
}
Console.WriteLine(“Исходный массив b: ”);
for (int i=0;i<m;++i)
{
for (int j=0;j<n;++j)
Console.Write(“\t” +b[i,j]);
Console.WriteLine();
}
for(int i = 0; i < m; ++i) for(int j = 0; j < n; ++j) { int s=0; for(int k = 0; k < n;++k) s+= a[i,k]*b[k,j]; c[i,j] = s; }
Console.WriteLine(“Полученное произведение матриц : ”);