Как я могу получить новый массив из второго элемента в C #? - PullRequest
3 голосов
/ 02 декабря 2009

У меня изначально был этот код, который я по ошибке думал, что он сделает то, что хотел:

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

Однако, похоже, что метод .Except удаляет дубликаты. Поэтому, если бы мне пришлось пройти через аргументы a b c c, результат otherArgs будет b c, а не b c c.

Так, как я могу получить новый массив со всеми элементами, начиная со второго элемента?

Ответы [ 4 ]

7 голосов
/ 02 декабря 2009

Используйте метод Skip:

var otherArgs = args.Skip(1).ToArray();
3 голосов
/ 02 декабря 2009

Если вы не имеете в виду массив назначений:

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

Если вы делаете:

Array.Copy(args, 1, otherArgs, 0, args.Length - 1);
2 голосов
/ 02 декабря 2009

Вы также можете использовать метод 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);
    }
}

}

2 голосов
/ 02 декабря 2009

Используя linq в том виде, в каком вы есть, и от макушки головы:

string[] otherArgs = args.skip(1).ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...