Ответы пользователя по тегу C#
  • Как сделать запись в прямоугольный массив?

    shlemen_kirill
    @shlemen_kirill
    .Net Developer
    С сайта Майкрософт: Resize Метод изменяет размер только одномерного массива. Array Класс не включает метод для изменения размера многомерных массивов. Для этого необходимо либо предоставить собственный код, либо вызвать Специальный метод в библиотеке стороннего производителя. В следующем коде показана одна возможная реализация метода, который изменяет размер массива из n измерений.
    using System;
    
    public class Example
    {
       public static void Main()
       {
          int[,] arr = new int[10,2];
          for (int n1 = 0; n1 <= arr.GetUpperBound(0); n1++) {
             arr[n1, 0] = n1;
             arr[n1, 1] = n1 * 2;
          }
    
          // Make a 2-D array larger in the first dimension.
          arr = (int[,]) ResizeArray(arr, new int[] { 12, 2} );
          for (int ctr = 0; ctr <= arr.GetUpperBound(0); ctr++)
             Console.WriteLine("{0}: {1}, {2}", ctr, arr[ctr, 0], arr[ctr, 1]);
          Console.WriteLine();
    
          // Make a 2-D array smaller in the first dimension.
          arr = (int[,]) ResizeArray(arr, new int[] { 2, 2} );
          for (int ctr = 0; ctr <= arr.GetUpperBound(0); ctr++)
             Console.WriteLine("{0}: {1}, {2}", ctr, arr[ctr, 0], arr[ctr, 1]);
       }
    
       private static Array ResizeArray(Array arr, int[] newSizes)
       {
          if (newSizes.Length != arr.Rank)
             throw new ArgumentException("arr must have the same number of dimensions " +
                                         "as there are elements in newSizes", "newSizes");
    
          var temp = Array.CreateInstance(arr.GetType().GetElementType(), newSizes);
          int length = arr.Length <= temp.Length ? arr.Length : temp.Length;
          Array.ConstrainedCopy(arr, 0, temp, 0, length);
          return temp;
       }
    }


    По идее тебе нужно воспользоваться методом ResizeArray, который представлен в коде и потом просто добавить необходимые данные.
    Ответ написан