8.12.16 — Матрицы
Матрица — это массив размерности 2. Можно рассматривать матрицу как таблицу со строками и столбцами. 

Инициализация матриц
Создание матрица отличается от создания массива наличием дополнительной запятой в квадратных скобках (символизирует наличие двух компонент для доступа к элементам).
int[,] mtx = new int[5, 5]; // Квадратная матрица 5 на 5, заполненная нулями

int[,] polyMtx = new int[3, 2] {{2, 0}, {0, 2}, {1, 1}};
Для доступа к элементу матрица необходимо указывать два индекса 
Console.WriteLine(polyMtrx[0, 1]); // 0 - строка, 1 - столбец

Аналог arr.Length для матриц
После того как вы создали матрицу и указали ее параметры в виде количества строк и столбцов, вы можете из переменной для матрица доставать эти значения. 
Количество строк:
Console.WriteLine(mtx.GetLength(0));
Количество столбцов:
Console.WriteLine(mtx.GetLength(1));

Печать матрицы
int[,] mtx = new int[4, 9];

for (int i = 0; i < mtx.GetLength(0); ++i)
{
  for (int j = 0; j < mtx.GetLength(1); ++j)
  {
    Console.Write("{0} ", mtx[i, j]);
  }
  // Перейти на строки при печати 
  Console.WriteLine();
}

Алгоритмы

Просуммировать элементы строк матрицы a. Результат получить в виде вектора (одномерного массива) b

int[,] a = new int[3, 3] {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; 
int[] b = new int[3]; 
for (int i = 0; i < 3; i++) 
  int s = 0
  for (int j = 0; j < 3; j++) 
  {
    s += a[i, j]; 
  }
  b[i] = s; 
for (int i = 0; i < 3; i++) 
{
  Console.Write(“{0:d} ”, b[i]); 
}
Console.WriteLine();