ArraySegment JAUH lebih berguna dari yang Anda kira. Coba jalankan unit test berikut dan bersiaplah untuk kagum!
[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("}");
}
}
Soalnya, yang harus Anda lakukan adalah melemparkan ArraySegment ke IList dan itu akan melakukan semua hal yang mungkin Anda harapkan dari awalnya. Perhatikan bahwa tipenya masih ArraySegment, meskipun berperilaku seperti daftar normal.
KELUARAN:
ArraySegment0 {0,1,2,}
ArraySegment1 {3,4,5,}
ArraySegment2 {6,7,8,}
ArraySegmentdapat dihitung dalam .Net 4.5.