Сделайте методы расширения subarray в C#

Метод Array класса Array класса может копировать подмассив из одного массива в другой, но для этого требуется выяснить, сколько элементов вы хотите скопировать. Он также скопирует части двумерного массива, но только копирует смежные куски, а не прямоугольные фрагменты в середине массива.

Метод Array класса Array класса может копировать подмассив из одного массива в другой, но для этого требуется выяснить, сколько элементов вы хотите скопировать. Он также скопирует части двумерного массива, но только копирует смежные куски, а не прямоугольные фрагменты в середине массива.

...

В следующем коде показан метод расширения, который копирует часть одномерного массива в новый массив.

Код вычисляет количество элементов для копирования и создает массив для хранения этого количества элементов. Он использует Array.Copy для копирования нужного подмассива в новый массив и возвращает новый массив.

Следующий код использует этот метод расширения для копирования элементов 1 - 3 одномерного массива в новый массив.

В следующем коде показан метод расширения, который копирует часть двумерного массива в новый массив.

Этот метод вычисляет количество строк и столбцов, которые он должен скопировать, и создает массив для хранения элементов подмассива.

Затем код использует values.GetUpperBound, чтобы получить количество столбцов в исходном массиве и использует это значение для вычисления индекса первого элемента для копирования в значениях tt>. Этот индекс представляет собой количество строк, которые должны быть пропущены, умноженные на размер строки, плюс число столбцов, которые должны быть пропущены для достижения первой записи.

Затем код перебирает необходимое количество строк для копирования подмассива. Для каждой строки, которую он должен скопировать, код использует Array.Copy для копирования необходимого количества записей из исходного массива в позиции from_index в массив результатов в позиции TO_INDEX . Затем код добавляет общее количество столбцов в исходном массиве к from_index, поэтому он перемещается в следующую строку. Точно так же количество столбцов в новом массиве добавляется к to_index, поэтому оно перемещается в следующую строку в этом массиве.

Следующий код использует этот метод расширения для копирования элементов в строках 2-3 и столбцах 1-3 в новый массив.

В следующем коде показан метод расширения, который копирует часть двумерного массива в существующий массив.

Этот код получает количество столбцов в исходном и целевом массивах и использует эти значения для вычисления начальных индексов в обоих массивах. Затем он перебирает нужные строки для копирования значений в целевой массив, так как предыдущий метод расширения копировал значения в новый массив. Единственное различие заключается в том, что значения копируются в определенную часть целевого массива, а не в начало целевого массива.

Следующий код использует этот метод расширения для копирования элементов в строках 2-3 и столбцах 1-3 в новый массив.

Этот код выделяет новый двумерный массив того же размера, что и исходный массив, и заполняет его записи значением -. Затем он использует метод расширения CopyTo для копирования подмассива в строках 2-3 и столбцах 1-3 в позицию [1, 0] в новом массиве. Метод заканчивается вызовом ShowValues для отображения результата. Метод ShowValues прост, поэтому я не буду показывать его здесь. Загрузите примерную программу, чтобы увидеть, как она работает.

Источник: http://csharphelper.com/blog/2017/10/make-subarray-extension-methods-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *