ArraySegment 的使用 【转载】
本文转载自 http://www.cnblogs.com/overred/archive/2009/01/17/1359126.html
ArraySegment顾名思义就是Array区块,数组的小抽屉,用于对该数组中元素的范围进行分隔。比如这个数组:
String[] myArr = { "Overred", "Medloy", "Xiaoguai", "Hare" };我们用ArraySegment这个抽屉给装起来就是:
ArraySegment<String> arrSeg = new ArraySegment<String>(myArr);
只需for一下就可以得出这个小抽屉里的myArr值(不能foreach,ArraySegment无GetEnumerator方法实现)
for ( int i = arrSeg.Offset; i < (arrSeg.Offset + arrSeg.Count); i++ ) {
Console.WriteLine( " [{0}] : {1}", i, arrSeg.Array[i] );
}
比如我们想取某个区域,可以:
ArraySegment<String> myArrSegMid = new ArraySegment<String>(myArr, 1, 3);
则取myArr的索引从1到3的值,
需要注意的是:
多个 ArraySegment 实例可以引用同一个原始数组,从而可能发生重叠。Array 属性返回整个原始数组,而不是该数组的副本;
所以:
arrSeg.Array[2] = "xx";
则会导致myArr里的值也发生变化,此时的myArr值则为:
{ "Overred", "Medloy", "xx", "Hare" };