Мой вопрос похож на Getting a sub-array from an existing array, хотя в моем случае очень важно другое понятие - я не могу использовать копирование памяти.Как получить подматрицу из существующего массива в C# без копирования?
Скажем, у меня есть массив X
из 10000 элементов, мне нужно массив, который содержит Y
бы 9000 элементов из X
, начиная с X
«s индекс 500.
Но я не хочу, чтобы скопировать часть X
в новый массив Y
, поэтому я не хочу использовать Array.Copy, Array.Clone, System.Block.Copy, IEnumerables и т. д. Я хочу, чтобы Y
был ссылкой на X - Y[0]
, был бы фактически X[500]
, Y[1]
соответствует X[501]
, .. ., Y[9000]
есть X[9500]
.
Таким образом, например, значение изменения X[100]
в то же время изменит значение Y[600]
. Как я могу достичь этого в C#?
Конечно, вы можете использовать операции 'unsafe' (например, указатели C++), но это не рекомендуется. –
Вы считали создание простой оболочки, которая действует как массив? Это не будет * быть * массивом, но если вы написали свой код для использования обертки, вместо этого вы могли бы создать обертки для меньших фрагментов базового большего массива. –
* Почему * вы не можете использовать копирование памяти? Есть ли причина, по которой вы не можете передать смещение (возможно, как часть обертки, как предлагает @ LasseV.Karlsen)? –