我的问题类似于从现有数组中获取子数组,尽管在我的情况下,一个不同的概念非常重要 - 我不能使用内存复制.
假设我有X10000个元素的数组,我需要Y包含9000个元素的数组,X从X索引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#中实现这一目标?
您可以使用以下内容将其包装在另一个对象中:
class View<T>
{
private T[] _array;
private long _start;
private long _length;
public View(T[] array, long start, long length) { ... }
public T this[long index]
{
get
{
if (/*do bounds check here*/)
{
return _array[_start + index];
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这不是一个数组,而是一个数组的投影.