O que significa {0} quando encontrado em uma string em C #?

Em um dictionary como este:

Dictionary openWith = new Dictionary(); 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"]); 

A saída é:

Para Key = “rtf” value = wordpad.exe

O que significa o {0} ?

Você está imprimindo uma string formatada. O {0} significa inserir o primeiro parâmetro após a string de formatação; neste caso, o valor associado à chave “rtf”.

Para String.Format, que é semelhante, se você tivesse algo como

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

você criaria uma string “Este é um teste . O valor é 42 “.

Você também pode usar expressões e imprimir valores várias vezes:

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

rendendo “Fib: 1 , 1 , 2 , 3

Veja mais em http://msdn.microsoft.com/en-us/library/txafckwd.aspx , que fala sobre formatação de compostos.

É um marcador de posição na cadeia.

Por exemplo,

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

produziria essa saída:

 Hello world. 

Além disso, você pode ter tantos espaços reservados quanto desejar. Isso também funciona no String.Format :

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

E você ainda obteria a mesma saída.

Além do valor que você deseja imprimir, o {0} {1} , etc., você pode especificar um formato. Por exemplo, {0,4} será um valor preenchido com quatro espaços.

Há vários especificadores de formato integrados e, além disso, você pode criar seus próprios. Para um tutorial / lista decente, veja Formatação de String em C # . Além disso, há um FAQ aqui .

Para referência futura, no Visual Studio, você pode tentar colocar o cursor no nome do método (por exemplo, WriteLine) e pressionar F1 para obter ajuda nesse contexto. Cavando ao redor deve então encontrar String.Format() neste caso, com muita informação útil.

Note que destacar uma seleção (por exemplo, clicar duas vezes ou fazer uma seleção de arrastar) e apertar F1 só faz uma pesquisa de string sem contexto (o que tende a não achar nada útil), então certifique-se de posicionar o cursor em qualquer lugar dentro da palavra sem destacá-la.

Isso também é útil para documentação sobre classs e outros tipos.

É um espaço reservado para o primeiro parâmetro, que no seu caso é avaliado como “wordpad.exe”.

Se você tivesse um parâmetro adicional, usaria {1} , etc.

É um espaço reservado para um parâmetro muito parecido com o que o especificador de formato %s atua no printf .

Você também pode adicionar coisas extras para determinar o formato, embora isso faça mais sentido com uma variável numérica ( exemplos aqui ).

Isso é o que chamamos de Formatação Composta do .NET Framework para converter o valor de um object em sua representação de texto e incorporar essa representação em uma string. A string resultante é gravada no stream de saída.

O método sobrecarregado Console.WriteLine (String, Object) Grava a representação de texto do object especificado, seguido pelo terminador de linha atual, no stream de saída padrão usando as informações de formato especificadas.