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         }

 

 

posted @ 2012-11-03 18:46  转身就是一辈子  阅读(492)  评论(0编辑  收藏  举报