结构ArraySegment<T>表示数组的一段,将整个数组传递给不同的方法。这些方法只使用数组的某个部分。方法的参数除了数组以外,还应包括数组内的偏移量以及该方法应该使用的元素数。
static int SumOfSegments(ArraySegment<int>[] segments) {
int sum = 0;
foreach (var item in segments)
{
for (int i = item.Offset; i < item.Offset+item.Count; i++)
{
sum += item.Array[i];
}
}
return sum;
}
static void Main(string[] args)
{
int[] ar1 = { 1, 4, 5, 11, 13, 18 };
int[] ar2 = { 3, 4, 5, 18, 21, 27, 33 };
var segments = new ArraySegment<int>[2]
{
new ArraySegment<int>(ar1,0,3),
new ArraySegment<int>(ar2,3,3)
};
var sum = SumOfSegments(segments);
Console.ReadLine();
}