Как это сделать в данный момент:Есть ли лучший способ инкапсулировать массив?
class Foo
{
public int[] A { get { return (int[])a.Clone(); } }
private int[] a;
}
Я думаю, что это плохо, потому что это создает клон и отбрасывает всякий раз, когда я к нему доступ. Я знаю, что могу обойти это, введя дополнительную переменную, подобную этой:
var foo = new Foo();
// as soon as you have to access foo.A do this
int[] fooA = foo.A;
// use fooA instead of foo.A from now on
но все же это просто выглядит плохо.
Я также не нравится Java способ инкапсулирования
int get(int index) { return a[index]; }
, потому что я не получаю преимущества использования массива.
Есть ли лучший способ сделать это?
Редактировать: Я хочу массив инкапсулированных переменных. Проблема заключается в том, что
public int[] A { get; private set; }
не является массив инкапсулированного переменными, потому что я могу изменить элементы массива из-за пределы класса.
редактировать: Он должен также работать с многомерными массивами
На каких именно преимуществах вы смотрите? Возможно, вы можете добавить индексатора в 'Foo'. Боюсь, что неясно, чего вы пытаетесь достичь. –
вы можете создать итератор для массива. но неясно, чего вы хотите достичь. –
Я просто хочу массив инкапсулированных переменных – foxneSs