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

85

Em um dicionário como este:

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

O resultado é:

Para Key = "rtf" value = wordpad.exe

O que isso {0}significa?

Ricardo
fonte

Respostas:

181

Você está imprimindo uma string formatada. O {0} significa inserir o primeiro parâmetro após a string de formato; 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) 

produzindo "Fib: 1 , 1 , 2 , 3 "

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

Daniel LeCheminant
fonte
25

É um marcador de posição na string.

Por exemplo,

string b = "world.";

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

produziria esta saída:

Hello world.

Além disso, você pode ter quantos marcadores de posição desejar. Isso também funciona em String.Format:

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

Console.WriteLine(a);

E você ainda obteria a mesma saída.

Steven DeWitt
fonte
11

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

Existem vários especificadores de formato integrados e, além disso, você pode fazer o seu próprio. Para obter um tutorial / lista decente, consulte Formatação de strings em C # . Além disso, há um FAQ aqui .

Muad'Dib
fonte
6

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

Observe que realçar uma seleção (por exemplo, clicar duas vezes ou selecionar arrastar e selecionar) e acertar F1apenas faz uma pesquisa de string fora do contexto (que tende a ser péssima em encontrar algo útil), então certifique-se de posicionar o cursor em qualquer lugar dentro a palavra sem destacá-la.

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

Rob Parker
fonte
5

É um espaço reservado para o primeiro parâmetro, que no seu caso avalia como "wordpad.exe".

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

Bravax
fonte
4

É um espaço reservado para um parâmetro muito parecido com o que o %sespecificador de formato age nele printf.

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

Esteira
fonte
0

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

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

Sujith Karivelil
fonte