Что означает {0} при нахождении в строке на C #?

85

В словаре вроде этого:

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"]);

Результат:

Для Key = "rtf" value = wordpad.exe

Что {0}значит?

Рикардо
источник

Ответы:

181

Вы печатаете отформатированную строку. {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) 

что дает "Fib: 1 , 1 , 2 , 3 "

См. Дополнительную информацию на http://msdn.microsoft.com/en-us/library/txafckwd.aspx , где говорится о составном форматировании.

Даниэль ЛеШеминант
источник
25

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

Например,

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

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

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

Муад'Диб
источник
6

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

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

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

Роб Паркер
источник
5

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

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

Bravax
источник
4

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

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

Мат
источник
0

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

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

Суджит Каривелил
источник