#c_sharp #c_sharp_70
Существует ли какой-либо способ расширить встроенный прямоугольный массив в c#? Например: public class Array2D:???? { private T[,] _data; public Array2D(T[,] vals) { _data = vals; } public IEnumerable Row( int iRow) { return _data.Cast ().Select((t, j) => _data[iRow, j]); } }
Ответы
Ответ 1
Использовать методы расширения? public static class TwoDimensionalArrayExtensions { public static IEnumerableRow (this T[,] array, int iRow) { if (array == null) { throw new ArgumentNullException(nameof(array)); } if (iRow < array.GetLowerBound(0) && iRow > array.GetUpperBound(0)) { throw new ArgumentOutOfRangeException(nameof(iRow)); } for (int columnIndex = array.GetLowerBound(1); columnIndex <= array.GetUpperBound(1); columnIndex++) { yield return array[iRow, columnIndex]; } } } Использование: static void Main(string[] args) { var array = new int[2, 2] { { 1, 2 }, { 3, 4 } }; foreach (var value in array.Row(0)) { Console.WriteLine(value); } }
Комментариев нет:
Отправить комментарий