Как сделать использование ключевого слова params аналогичным записи в Консоль - PullRequest
0 голосов
/ 30 октября 2009

По отношению к моему последнему вопросу ( Есть ли более простой способ передачи группы переменных в виде массива )

Я пытался передать строковые переменные методу для записи в поток, а не делать запись в каждом отдельном методе.

Использование ключевого слова params, очевидно, является решением, однако, используя его, я полагаю, что я не могу делать такие вещи:

Write("hello {0}",var1);

Что без делает код довольно грязным. Есть ли способ заставить эту функцию использовать мои собственные методы?

Ответы [ 2 ]

6 голосов
/ 30 октября 2009
void MyMethod(string format, params object[] obj) {
    var formattedString = String.Format(format, obj);
    // do something with it...
}
1 голос
/ 30 октября 2009

Методу с ключевым словом params может быть передан явный массив или встроенный массив.

Поэтому вы можете написать следующее:

public static void Write(params string[] stringsToWrite) {
    //...
    writer.WriteLine("Hello {0} {1} {2}", stringsToWrite);
    //...
}

РЕДАКТИРОВАТЬ Ваш вопрос неясен. Если вы спрашиваете, можно ли дать параметру массива params только одно значение, ответ - да.

Например:

Write("myString");

Причина, по которой многие params методы в .Net имеют отдельные перегрузки, которые принимают только один параметр, состоит в том, чтобы избежать создания массива по причинам оптимизации.

...