Расширение массива с сохранением элементов. Проблема с Csharp

using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;



namespace first_space
{
class Program
{
    static void Main(string[] args)
    {
        
        int[,] arrayDouble = { {1,2,3,4,5,6 }, { 1,2,3,4,5,6 }, { 1,2,3,4,5,6 }, { 1,2,3,4,5,6 }, { 1,2,3,4,5,6 }, { 1,2,3,4,5,6 }, }; // [5,5] ведь так? 
        arrayDouble = arrayFun(arrayDouble); // метод ниже, что будет возвращать двумерный массив
        arrayDouble[6, 5] = 55; // проверяю, расширился ли массив

        Console.WriteLine(arrayDouble[6,5] + " Вывод"); // пишет, что я вне массива.
        
    }
    static int[,] arrayFun(int[,] inputArray) 
    {
        int[,] tempArrayDouble = new int[6, 6]; //должен создаваться массив большего размера, чем [5,5], но сразу после метода и проверки пишут, что я выхожу за границы массива, хотя [6,5] скорее всего в ходит в пределы нового массива. В случае с [7,7] работает все прекрасно. За глупый вопрос извините, но где я неправильно понял работу с массивами? 
        for (int i = 0; i < inputArray.GetLength(0); i++)
        {
            for (int j = 0; j < inputArray.GetLength(1); j++)
            {
                tempArrayDouble[i, j] = inputArray[i, j];
            }

        }

        inputArray = tempArrayDouble;


        return inputArray;
        
    }

}
}

Ответы (2 шт):

Автор решения: 4500zenja

Пусть Вы создаёте двумерный массив с параметрами

...
int[,] tempArrayDouble = new int[N, M]; // представим, что N и M уже определены
...

Тогда для этого массива можно вызывать только такие элементы, индексы которых будут находиться в промежутке от 0 до N/M не включая (т.е. если мы попробуем написать arrayDouble[N, M], то компилятор пошлёт нас с ошибкой выделения памяти).

В Вашем примере N = M = 6, т.е. мы теперь можем объявлять элементы массива с индексами от 0 до 5. Очевидно, что 6 не входит в данный промежуток, посему и ошибка.

С другой стороны, при arrayDouble[7, 7] индексы теперь включают 6, поэтому тогда ошибка и не выводится. Также на забывайте, что все индексы в массивах начинаются не с 1, а с 0.

→ Ссылка
Автор решения: CrazyElf

Вас, видимо, путает похожесть записи - и там и там квадратные скобки. Но это разное:

  • new int[6, 6] - тут числа - это размеры массива, т.е. возможное число элементов в массиве по каждому из его измерений
  • arrayDouble[6, 5] - а тут числа - это индексы в массиве, а индексы массива размером N будут лежать в диапазоне от 0 до N-1 в каждом из измерений массива

Так что не забывайте просто, где размеры массива, а где его индексы и то, что индексы начинаются с 0. Например, единственный доступный индекс для массива размером 1 - это индекс 0.

→ Ссылка