Я просто заметил, что могу сделать следующее, которое стало полной неожиданностью для меня:
Console.WriteLine("{0}:{1}:{2}", "foo", "bar", "baz");
Это работает на Write
метод также. Из чего другие методы имеют подписи, поддерживающие это, не требуя использования String.Format
?
Debug.WriteLine
не делает...HttpResponse.WriteLine
не делает...
(И на ноте стороны, я не мог найти быстрый способ искать это с Отражателем. Что хороший путь состоит в том, чтобы искать определенные подписи?)
Править:
Специально для 3,5 платформ.
Существует множество методов, поддерживающих это во всей структуре. Все подклассы 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));
}
Экземпляры StringBuilder имеют метод AppendFormat.
Экземпляры StringWriter имеют перегрузку Write, которая принимает параметры формата.
Класс StringBuilder имеет метод с именем AppendFormat, который ведет себя таким же образом
Floor ((log2 (N )/8) + 1) байт
-121--1466486- .Net содержит список допустимых типов постоянных ссылок, StringBuilder
не является одним из них.
Претензия заключается в том, что то, что вы создаете, не является незыблемым, хотя статический конструктор вызывается один раз и класс инициализируется один раз, это все, что остается прежним, остальное может изменяться. Один поток может вызвать .Append ()
, затем другой... вы видите, как последовательность builder сам мутирует и на самом деле не только для чтения
, потому что он постоянно меняет состояния/мутирует.
Объявление только для чтения
действительно является неправильным, поскольку сам объект, на который имеется ссылка, постоянно изменяется.
Debug.WriteLine (последовательность, params Object [] args) перегрузка также делает это, добавляясь в .Net 4.0.