ArraySegment hữu ích hơn rất nhiều so với những gì bạn nghĩ. Hãy thử chạy bài kiểm tra đơn vị sau và chuẩn bị để ngạc nhiên!
[TestMethod]
public void ArraySegmentMagic()
{
var arr = new[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
var arrSegs = new ArraySegment<int>[3];
arrSegs[0] = new ArraySegment<int>(arr, 0, 3);
arrSegs[1] = new ArraySegment<int>(arr, 3, 3);
arrSegs[2] = new ArraySegment<int>(arr, 6, 3);
for (var i = 0; i < 3; i++)
{
var seg = arrSegs[i] as IList<int>;
Console.Write(seg.GetType().Name.Substring(0, 12) + i);
Console.Write(" {");
for (var j = 0; j < seg.Count; j++)
{
Console.Write("{0},", seg[j]);
}
Console.WriteLine("}");
}
}
Bạn thấy đấy, tất cả những gì bạn phải làm là truyền một ArraySegment tới IList và nó sẽ thực hiện tất cả những điều mà bạn có thể mong đợi nó sẽ làm ngay từ đầu. Lưu ý rằng kiểu vẫn là ArraySegment, mặc dù nó đang hoạt động như một danh sách bình thường.
ĐẦU RA:
ArraySegment0 {0,1,2,}
ArraySegment1 {3,4,5,}
ArraySegment2 {6,7,8,}
ArraySegment
có thể liệt kê trong .Net 4.5.