在C#中引用数组的一部分

Jam*_*mie 4 c# arrays copy reference

我有一个包含一些数据的数组,比如标题和真实数据.我需要将数组中包含的数据传递给方法,但我绝对希望避免将其复制到另一个数组.

我想到了像ArraySegment这样的东西,但似乎不适用于我的情况(或者我错了?).

那么,如何将数组的一部分传递给方法,因为它本身就是数组?

谢谢您的回复!

干杯

Dar*_*rov 7

跳过采取:

var subArray = array.Skip(5).Take(10);
Run Code Online (Sandbox Code Playgroud)


Ala*_*son 5

如果你想坚持只是基本数组(即int []数字),那么最有效的方法是让你的函数直接采用偏移/计数.

有很多IO功能可以做类似的事情:

readData(data, 0, 4);

string readData(byte [] buffer, int offset, int length)
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用IEnumberable <T>并使用skip/take

readData(data.Skip(0).Take(4));

string readData(IEnumerable<byte> buffer)
Run Code Online (Sandbox Code Playgroud)

重要的是要记住,在c#中你没有处理指针,你正在处理对象.