El ArraySegment es mucho más útil de lo que parece. ¡Prueba ejecutar la siguiente prueba unitaria y prepárate para sorprenderte!
[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("}");
}
}
Ves, todo lo que tiene que hacer es lanzar un ArraySegment a IList y va a hacer todas las cosas que probablemente esperaba que se puede hacer en el primer lugar. Observe que el tipo sigue siendo ArraySegment, aunque se comporte como una lista normal.
SALIDA:
ArraySegment0 {0,1,2,}
ArraySegment1 {3,4,5,}
ArraySegment2 {6,7,8,}
Parece que 'ArraySegment' es enumerable en .Net 4.5. – svick
Por intento como [esta pregunta] (https://stackoverflow.com/questions/27965131/how-to-remove-the-first-element-in-an-array) .. –