public static Array GetRange2(Array source, int begin, int end)
{
int sourceLen = source.Length;
begin = NormalizeIndex(sourceLen, begin);
end = NormalizeIndex(sourceLen, end);
int targetLen = Math.Max(0, end - begin);
Array target = Array.CreateInstance(source.GetType().GetElementType(), targetLen);
Array.Copy(source, begin, target, 0, targetLen);
return target;
}