demo:
using System;
using System.Collections.Generic;
namespace SocketAsyncClient
{
/*demo:
*
* byte[] pp = new byte[] { 1, 2, 3, 4 };
SubArray<byte> bb = new SubArray<byte>(pp, 2, 2);
Console.WriteLine();
foreach (byte b in bb)
{
Console.WriteLine(b);
}
*/
public class SubArray<T>
{
private ArraySegment<T> segment;
public SubArray(T[] array, int offset, int count)
{
segment = new ArraySegment<T>(array, offset, count);
}
public int Count
{
get { return segment.Count; }
}
public T this[int index]
{
get
{
return segment.Array[segment.Offset + index];
}
}
public T[] ToArray()
{
T[] temp = new T[segment.Count];
Array.Copy(segment.Array, segment.Offset, temp, 0, segment.Count);
return temp;
}
public IEnumerator<T> GetEnumerator()
{
for (int i = segment.Offset; i < segment.Offset + segment.Count; i++)
{
yield return segment.Array[i];
}
}
}
}
本文详细探讨了ArraySegment类在.NET中的应用,通过实例演示其如何用于高效地操作数组的部分区域。ArraySegment提供了一种方式,可以更方便地在不复制整个数组的情况下,处理和传递数组的一部分。

3949

被折叠的 条评论
为什么被折叠?



