C# 是否有更简洁的方法从数组中提取(n>;i)元素?

C# 是否有更简洁的方法从数组中提取(n>;i)元素?,c#,C#,我需要一段代码,它能够获取长度为l的字符串数组,提取I之后存在的所有元素,其中I是小于l的特定索引,然后将提取的元素放入新数组 基本上,如果我们具备以下条件: [“A”、“B”、“C”、“D”、“E”、“F”] 在本例中,l=6如果我们取n=3,那么代码应该创建一个新数组 [“D”、“E”、“F”] 我已经编写了实现这一点的代码,但我忍不住认为有更好、更简洁的方法 以下是我所拥有的: List<string> tempElements = new List<string>

我需要一段代码,它能够获取长度为
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();
List tempElements=new List();
for(int i=startOfMessage;i

这是一个相对简单的问题,但我的目标是尽可能减少初级代码。

听起来您只是想从LINQ使用:

string[] usableMessageElements = elements.Skip(startOfMessage).ToArray();

您的代码看起来不错,但可以使用数组:

不是很短但更快(1000000次迭代):

添加到列表:226.0038毫秒


数组副本:107.4445毫秒

1)您的代码看起来不错。2) 这更适合
string[]usableMessageElements=startOfMessage.Skip(startOfMessage.ToArray()简洁在我看来被高估了。每次我都会选择解释性更强的代码而不是简洁。9/10长时间做事同样“高效”。更不用说过早的优化问题了。这是否适用于这里,可能不适用,但不要被认为短代码总是好代码。下一个c#将有一些很酷的数组内容。请看新的数组范围:这对现有代码有什么好处?我想它更简洁(正如OP所要求的那样),去掉了for循环和IList的使用。要简洁得多。谢谢你,乔恩。@Liam,说真的?标题是“有没有更简洁的方法?”这肯定更简单:用几句话清楚地给出大量信息;简短但全面。是的@Idle\u认真考虑。。。o_O@Liam-如果以与问题相同的方式内联,则长度较短(2行),并且比使用
Skip
ToArray
更有效。实际上,长度不是很短。我是来这里表演的。为添加了一些值comparison@Hyarus在给出基准时,考虑添加有关已使用的体系结构、PC规范等的附加信息。
 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