Лямбда-выражения для массивов? - PullRequest
1 голос
/ 02 марта 2012

Прочитав этот вопрос здесь: Передав одно измерение двумерного массива в C # , я подумал, возможно ли использовать некоторую хитрость C # 4 для привязки одного индекса многомерного массива. Надеюсь, что-то вроде этого:

var matrix = new int[10, 20];
var row = <some dynamic magic with matrix, 7>;

И иметь строку, семантически идентичную матрице [7], так что строка [4] является точно матрицей [7, 4].

Это довольно легко сделать с помощью функций:

int some_func(int a, string b);
var some_func_5 = (b=>some_func(5, b));

У кого-нибудь есть идея?

1 Ответ

6 голосов
/ 02 марта 2012

Я не думаю, что вы можете сделать что-то особенно специфичное для C # -4 здесь. Я бы лично создал для него определенный тип:

public sealed class RectangularArrayView<T> : IList<T>
{
    private readonly int row;
    private readonly T[,] array;

    public RectangularArrayView(int row, T[,] array)
    {
        this.row = row;
        this.array = array;
    }

    public T this[int column]
    {
        get { return array[row, column]; }
        set { array[row, column] = value; }
    }

    // etc for other IList<T> methods; use explicit interface implementation
    // for things like Add which don't make sense on arrays
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...