Что означает {0}, когда находится в строке в C #? - PullRequest
76 голосов
/ 10 февраля 2009

В словаре, подобном этому:

Dictionary<string, string> openWith = new Dictionary<string, string>();

openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");

Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);

Вывод:

For Key = "rtf" value = wordpad.exe

Что означает {0}? 1011 *

Ответы [ 7 ]

169 голосов
/ 10 февраля 2009

Вы печатаете отформатированную строку. {0} означает вставить первый параметр после строки формата; в этом случае значение, связанное с ключом "rtf".

Для String.Format, который похож, если у вас было что-то вроде

//            Format string                    {0}           {1}
String.Format("This {0}.  The value is {1}.",  "is a test",  42 ) 

вы бы создали строку "Этот является тестом . Значение 42 ".

Вы также можете использовать выражения и выводить значения несколько раз:

//            Format string              {0} {1}  {2}
String.Format("Fib: {0}, {0}, {1}, {2}", 1,  1+1, 1+2) 

уступающий "Фиб: 1 , 1 , 2 , 3 "

Подробнее см. http://msdn.microsoft.com/en-us/library/txafckwd.aspx,, в котором говорится о составном форматировании.

23 голосов
/ 10 февраля 2009

Это заполнитель в строке.

Например,

string b = "world.";

Console.WriteLine("Hello {0}", b);

выдаст такой вывод:

Hello world.

Кроме того, вы можете иметь столько заполнителей, сколько пожелаете. Это также работает на String.Format:

string b = "world.";
string a = String.Format("Hello {0}", b);

Console.WriteLine(a);

И вы все равно получите тот же вывод.

11 голосов
/ 10 февраля 2009

В дополнение к значению, которое вы хотите распечатать, {0} {1} и т. Д., Вы можете указать формат. Например, {0,4} будет значением, которое дополняется четырьмя пробелами.

Существует несколько встроенных спецификаторов формата, и, кроме того, вы можете создать свой собственный. Для приличного учебника / списка смотрите Форматирование строки в C # . Также есть FAQ здесь .

6 голосов
/ 10 февраля 2009

Для дальнейшего использования в Visual Studio вы можете попробовать поместить курсор в имя метода (например, WriteLine) и нажать F1 , чтобы вызвать справку по этому контексту. Копание вокруг должно найти вас String.Format() в этом случае, с большим количеством полезной информации.

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

Это также полезно для документации по классам и другим типам.

5 голосов
/ 10 февраля 2009

Это заполнитель для первого параметра, который в вашем случае оценивается как "wordpad.exe".

Если бы у вас был дополнительный параметр, вы бы использовали {1} и т. Д.

4 голосов
/ 10 февраля 2009

Это заполнитель для параметра, аналогичный спецификатору формата %s, действующему в пределах printf.

Вы можете начать добавлять туда дополнительные элементы, чтобы определить формат, хотя это имеет смысл с числовой переменной ( примеры здесь ).

0 голосов
/ 14 мая 2018

Это то, что мы назвали Составное форматирование .NET Framework для преобразования значения объекта в его текстовое представление и встраивания этого представления в строку. Полученная строка записывается в выходной поток.

Перегруженный Метод Console.WriteLine (String, Object) Записывает текстовое представление указанного объекта, сопровождаемое ограничитель текущей строки в стандартный поток вывода с использованием информация указанного формата.

...