在C#中,返回数组最后N个元素的最有效方法是什么?
我正在处理数十万个元素的数组,我更喜欢一个比基于LINQ的解决方案更高效的答案。
我还希望答案是经过单元测试,以避免出现错误。
答案 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