我需要一段代码,该代码能够提取长度为l
的字符串数组,并提取i
之后的所有元素,其中i
是一个特殊的索引小于l
,然后将提取的元素放入新数组中。
基本上,如果我们具有以下条件:
["A", "B", "C", "D", "E", "F"]
在这种情况下,l = 6
,如果我们采用n = 3
,则代码应创建一个新数组
["D", "E", "F"]
我已经写出了代码来执行此操作,但是我不禁想到有一种更好,更简洁的方法来实现它。
这就是我所拥有的:
List<string> tempElements = new List<string>();
for (int i = startOfMessage; i < elements.Length; i++)
{
tempElements.Add(elements[i]);
}
string[] usableMessageElements = tempElements.ToArray();
一个相对简单的问题,但我的目标是尽可能减少初级代码。
答案 0 :(得分:9)
听起来您只想使用LINQ中的Skip
:
string[] usableMessageElements = elements.Skip(startOfMessage).ToArray();
答案 1 :(得分:3)
您的代码看起来不错,但是您可以使用Array。Copy:
public string[] Extract(string[] source, int offset)
{
string[] strings = new string[source.Length - offset];
Array.Copy(source, offset, strings, 0, strings.Length);
return strings;
}
//...
string[] usable = Extract(new[] { "A", "B", "C", "D", "E", "F" }, 3); //D, E, F
不是很短,但是更快(1,000,000次迭代):
添加到列表:226.0038 ms
阵列复制:107.4445毫秒