Если я правильно понимаю, что я не уверен, что вы пытаетесь сделать, это увеличить 2D-массив, добавив элемент по диагонали исходной матрицы:
Например:
row = 2
column = 2
Matrix = |'str1' | 'str2'| s = |'str10' | 'str11' |
|'str3' | 'str4'| | ... | ... |
Чтобы при вызове Container.Add(s,0,0)
ожидаемые результаты имели
Matrix = |'str1' | 'str2'| empty |
|'str3' | 'str4'| empty |
|empty | empty | 'str10'|
Это то, что я понимаю, делает ваш код (возможно, я ошибаюсь). Затем появляется ошибка, потому что вы пытаетесь получить доступ к Matrix [2,2], когда массив Matrix равен 2x2, поэтому третий столбец отсутствует. Одним из решений этого будет
public void Add(string[,] s1, int height, int width)
{
# Create a new Array
var newMatrix = new string[Rows++,Columns++]
# Pass the old array to the new one
for(i=0;i<Rows-1;i++)
{
for(j=0;j<Columns-1;j++)
{
newMatrix[i,j] = Matrix[i,j];
}
}
# Add the new element
newMatrix[Rows, Columns] = s1[height, width];
# Then make the new matrix the good one
Matrix = newMatrix;
}
Я надеюсь, что это полезно, и если я ошибаюсь, я обязательно изменю это.
РЕДАКТИРОВАТЬ:
Хорошо, теперь я думаю, что понимаю, что вы хотите - сохранить массив в классе контейнера, а не добавить элемент. Итак, что вы должны сделать, это
public void Add(string[,] s1, int height, int width)
{
Matrix = s1;
Rows = height;
Columns = width;
}
Может быть, я слишком упрощен. Дайте мне знать