ArraySegment<t>的使用
ArraySegment<t>的使用
ArraySegment<T> 是某个数组的包装,用于对该数组中元素的范围进行分隔。 多个 ArraySegment<T> 实例可以引用同一个原始数组,从而可能发生重叠。
Array 属性返回整个原始数组,而不是该数组的副本;因此,由 Array 属性返回的对该数组所做的更改将作用于原始数组。
原始数组必须是一维数组,并且必须具有从零开始的索引。
MSDN地址:http://msdn.microsoft.com/zh-cn/library/vstudio/1hsbd92d.aspx
下面是使用方法:
1 static void Main(string[] args)
2 {
3 int[] ar1 = { 1, 2, 3, 4, 5, 6, 7, 8 };
4 int[] ar2 = { 2, 3, 4, 5, 6, 7, 8, 9 };
5 var segments = new ArraySegment<int>[2]
6 {
7 new ArraySegment<int>(ar1,0,3),
8 new ArraySegment<int>(ar2,3,3)
9 };
10 var sum = SumOfSegments(segments);
11 Console.WriteLine(sum.ToString());
12 int[] i= segments[0].Array;
13 Console.ReadKey();
14 }
15
16 static int SumOfSegments(ArraySegment<int>[] segments)
17 {
18 int sum = 0;
19 foreach (var segment in segments)
20 {
21 for (int i = segment.Offset; i < segment.Offset + segment.Count; i++)
22 {
23 sum += segment.Array[i];
24 };
25 }
26 return sum;
27 }