Какие методы в рамках 3.5 имеют сигнатуру в стиле String.Format? - PullRequest
5 голосов
/ 16 февраля 2010

Я только что заметил, что могу сделать следующее, что стало для меня полной неожиданностью:

Console.WriteLine("{0}:{1}:{2}", "foo", "bar", "baz");

Это работает и для метода Write. Какие другие методы имеют подписи, поддерживающие это, не требуя использования String.Format?

Debug.WriteLine не ...
HttpResponse.WriteLine не ...

(Кстати, я не смог найти быстрый способ поиска этого с помощью Reflector . Что такое хороший способ поиска конкретных подписей?)

Edit:

Специально для платформы 3.5.

Ответы [ 4 ]

4 голосов
/ 16 февраля 2010

Есть много методов, которые поддерживают это во всей среде. Все подклассы TextWriter (и, следовательно, StreamWriter и StringWriter и их подклассы) будут наследовать метод Write , который поддерживает это.

Другой часто используемый пример - StringBuilder.AppendFormat .

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

public void Foo(string message) {
    // whatever
}

public void Foo(string format, params string[] arg) {
    Foo(string.Format(format, arg));
}
4 голосов
/ 16 февраля 2010

Экземпляры StringBuilder имеют метод AppendFormat.

Экземпляры StringWriter имеют перегрузку записи, которая принимает параметры формата.

0 голосов
/ 16 февраля 2010

Класс StringBuilder имеет метод AppendFormat, который ведет себя так же

...