在C#中获取数组的最后N个元素?

时间:2015-09-09 15:19:05

标签: c# .net

在C#中,返回数组最后N个元素的最有效方法是什么?

我正在处理数十万个元素的数组,我更喜欢一个比基于LINQ的解决方案更高效的答案。

我还希望答案是经过单元测试,以避免出现错误。

2 个答案:

答案 0 :(得分:1)

我可能会写:

public static T[] TakeLast<T>(this T[] source, int n)
{
        if(source == null)
            throw new ArgumentNullException(nameof(source));
        if(n > source.Length)
            throw new ArgumentOutOfRangeException(nameof(n), "Can't be bigger than the array");
        if(n < 0)
            throw new ArgumentOutOfRangeException(nameof(n), "Can't be negative");

        var target = new T[n]; 
        Array.Copy(source, source.Length - n, target, 0, n);
        return target;
}

答案 1 :(得分:-1)

如下。单元测试适用于authTicket.Version =

NUnit