Как построить метод с неопределенным количеством параметров en C # - PullRequest
4 голосов
/ 28 февраля 2012

Это мой код:

    private static string AddURISlash(string remotePath)
    {
        if (remotePath.LastIndexOf("/") != remotePath.Length - 1)
        {
            remotePath += "/";
        }
        return remotePath;
    }

Но мне нужно что-то вроде

AddURISlash("http://foo", "bar", "baz/", "qux", "etc/");

Если я правильно помню, string.format как-то так ...

String.Format("{0}.{1}.{2}.{3} at {4}", 255, 255, 255, 0, "4 p.m.");

Есть ли в C # что-то, что позволяет мне это делать?

Я знаю, что мог бы сделать

private static string AddURISlash(string[] remotePath)

но это не идея.

Если это что-то в некоторых рамках можно сделать, а в других нет, укажите, пожалуйста, и как это решить.

Заранее спасибо

Ответы [ 4 ]

6 голосов
/ 28 февраля 2012

Я думаю, вам нужен массив параметров :

private static string CreateUriFromSegments(params string[] segments)

Тогда вы реализуете , зная, что remotePath это простомассив, но вы можете вызвать его с помощью:

string x = CreateUriFromSegments("http://foo.bar", "x", "y/", "z");

(Как отмечено в комментариях, массив параметров может появляться только как последний параметр в объявлении.)

5 голосов
/ 28 февраля 2012

Вы можете использовать params, что позволяет указывать любое количество аргументов

private static string AddURISlash(params string[] remotePaths)
{
    foreach (string path in remotePaths)
    {
        //do something with path
    }
}

Обратите внимание, что params повлияет на производительность вашего кода, поэтому используйте его с осторожностью.

3 голосов
/ 28 февраля 2012

Это может быть то, что вы ищете (обратите внимание на ключевое слово params):

private static string AddURISlash(params string[] remotePath) {
    // ...
}
3 голосов
/ 28 февраля 2012

Попробуйте

private static string AddURISlash(params string[] remotePath)

Это позволит вам передать string[] в виде нескольких отдельных параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...