Подтвердить что ты не робот

Как написать метод С#, который принимает переменное количество аргументов?

Можно ли отправить переменное количество аргументов в метод?

Например, если я хочу написать метод, который объединил бы многие объекты string[] в одну строку, но я хотел, чтобы он мог принимать аргументы, не зная, сколько я хотел бы пройти, как бы это сделать

4b9b3361

Ответ 1

Вы сделали бы это как:

string ConcatString(params string[] arguments)
{
   // Do work here
}

Это можно назвать:

string result = ConcatString("Foo", "Bar", "Baz");

Подробнее см. params (С# Reference).


FYI - уже существует String.Concat(params object[] args) - он будет конкатенировать любой набор объектов, вызвав ToString() для каждого. Поэтому для этого конкретного примера это, вероятно, не очень полезно.

Ответ 2

Используйте ключевое слово params, чтобы сделать это:

public static string ConvertToOneString(params string[] list) 
{

    string result = String.Empty;
    for ( int i = 0 ; i < list.Length ; i++ )
    {
        result += list[i];
    }
    return result;
}

Использование:

string s = "hello"
string a = "world"
string result = ConvertToOneString(s, a);

Ответ 3

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

public static void UseParams(params int[] list)
{
    for (int i = 0; i < list.Length; i++)
        Console.Write(list[i] + " ");
}

Вы даже можете передать массив этому методу вместо списка параметров, и метод будет работать точно так же.

Ответ 4

очень легко сделать это, используя params keyword

void ConcatString(params String[] strArray)
{ 
    foreach (String s in strArray)
    {
        // do whatever you want with all the arguments here...
    }
}

Ответ 5

да, вы можете использовать параметры для этого

Ответ 6

Используйте params:

void YourMethod(params string[] infiniteArgs) { }

Ответ 7

string MyConcat(params string[] values)
{
    var s = new StringBuilder();
    foreach (var v in values)
       s.Append(v);
    return s.ToString();
}

Ответ 9

На практике бесконечное - нет (например, имеется конечный объем доступной памяти).

Неизвестно во время разработки, да.

Классическим примером этого является то, как он обрабатывается в консольном приложении.

http://dotnetperls.com/main

http://msdn.microsoft.com/en-us/library/cb20e19t(VS.71).aspx