我最初写的这段代码,我错误地认为它会实现我想要的功能:
string firstArg = args[0];
string[] otherArgs = args.Except(new string[] { args[0] }).ToArray();
然而,似乎.Except方法会移除重复项。所以如果我传递参数b c c,那么的结果将是c b而不是c b c。
那么我该如何获取从第二个元素开始的所有元素的新数组呢?
如果您没有特定的目标数组:
string[] otherArgs = args.Skip(1).ToArray();
Array.Copy(args, 1, otherArgs, 0, args.Length - 1);
根据你的使用情况,我认为你正在使用linq。以下是我能想到的:
string[] otherArgs = args.skip(1).ToArray();
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);
}
}
}