如何在c#中从第二个项目开始获取新数组?

3

我最初写的这段代码,我错误地认为它会实现我想要的功能:

string firstArg = args[0];
string[] otherArgs = args.Except(new string[] { args[0] }).ToArray();

然而,似乎.Except方法会移除重复项。所以如果我传递参数b c c,那么的结果将是c b而不是c b c
那么我该如何获取从第二个元素开始的所有元素的新数组呢?
4个回答

7

使用Skip方法:

var otherArgs = args.Skip(1).ToArray();

谢谢!这是我发布问题后第一件遇到的事情! - Damovisa

3

如果您没有特定的目标数组:

string[] otherArgs = args.Skip(1).ToArray();

如果你这样做:
Array.Copy(args, 1, otherArgs, 0, args.Length - 1);

2

根据你的使用情况,我认为你正在使用linq。以下是我能想到的:

string[] otherArgs = args.skip(1).ToArray();

2
您还可以使用ConstrainedCopy方法。以下是示例代码:

ConstrainedCopy 方法的用法演示:

static void Main(string[] args)
{
    string firstArg = args[0];
    Array otherArgs = new string[args.Length - 1];
    Array.ConstrainedCopy(args, 1, otherArgs, 0, args.Length - 1);

    foreach (string foo in otherArgs)
    {
        Console.WriteLine(foo);
    }
}

}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接