Какие методы в 3,5 платформах имеют Строку. Подобная Формату подпись?

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

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

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

Debug.WriteLine не делает...
HttpResponse.WriteLine не делает...

(И на ноте стороны, я не мог найти быстрый способ искать это с Отражателем. Что хороший путь состоит в том, чтобы искать определенные подписи?)

Править:

Специально для 3,5 платформ.

5
задан RedFilter 16 February 2010 в 16:52
поделиться

4 ответа

Существует множество методов, поддерживающих это во всей структуре. Все подклассы 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
ответ дан 14 December 2019 в 01:07
поделиться

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

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

4
ответ дан 14 December 2019 в 01:07
поделиться

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

0
ответ дан 14 December 2019 в 01:07
поделиться

Floor ((log2 (N )/8) + 1) байт

-121--1466486-

.Net содержит список допустимых типов постоянных ссылок, StringBuilder не является одним из них.

Претензия заключается в том, что то, что вы создаете, не является незыблемым, хотя статический конструктор вызывается один раз и класс инициализируется один раз, это все, что остается прежним, остальное может изменяться. Один поток может вызвать .Append () , затем другой... вы видите, как последовательность builder сам мутирует и на самом деле не только для чтения , потому что он постоянно меняет состояния/мутирует.

Объявление только для чтения действительно является неправильным, поскольку сам объект, на который имеется ссылка, постоянно изменяется.

-121--3959359-

Debug.WriteLine (последовательность, params Object [] args) перегрузка также делает это, добавляясь в .Net 4.0.

1
ответ дан 14 December 2019 в 01:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: