Que signifie {0} lorsqu'il est trouvé dans une chaîne en C #?


85

Dans un dictionnaire comme celui-ci:

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

La sortie est:

Pour Key = "rtf" value = wordpad.exe

Qu'est-ce que cela {0}signifie?

Réponses:


180

Vous imprimez une chaîne formatée. Le {0} signifie insérer le premier paramètre après la chaîne de format; dans ce cas la valeur associée à la clé "rtf".

Pour String.Format, qui est similaire, si vous aviez quelque chose comme

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

vous créeriez une chaîne "Ceci est un test . La valeur est 42 ".

Vous pouvez également utiliser des expressions et imprimer des valeurs plusieurs fois:

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

donnant "Fib: 1 , 1 , 2 , 3 "

Pour en savoir plus, consultez http://msdn.microsoft.com/en-us/library/txafckwd.aspx , qui traite du formatage composite.


25

C'est un espace réservé dans la chaîne.

Par exemple,

string b = "world.";

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

produirait cette sortie:

Hello world.

En outre, vous pouvez avoir autant d'espaces réservés que vous le souhaitez. Cela fonctionne également sur String.Format:

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

Console.WriteLine(a);

Et vous obtiendrez toujours le même résultat.


11

En plus de la valeur que vous souhaitez imprimer, le {0} {1}, etc., vous pouvez spécifier un format. Par exemple, {0,4}sera une valeur complétée à quatre espaces.

Il existe un certain nombre de spécificateurs de format intégrés et, en plus, vous pouvez créer le vôtre. Pour un didacticiel / liste décent, consultez Formatage de chaînes en C # . En outre, il y a une FAQ ici .


6

Pour référence future, dans Visual Studio, vous pouvez essayer de placer le curseur dans le nom de la méthode (par exemple, WriteLine) et appuyer sur F1pour afficher l'aide sur ce contexte. Creuser devrait alors vous trouver String.Format()dans ce cas, avec de nombreuses informations utiles.

Notez que mettre en évidence une sélection (par exemple, double-cliquer ou faire une sélection par glisser-déposer) et appuyer sur F1ne fait qu'une recherche de chaîne non contextuelle (ce qui a tendance à être nul pour trouver quelque chose d'utile), alors assurez-vous de placer le curseur n'importe où à l'intérieur le mot sans le mettre en évidence.

Ceci est également utile pour la documentation sur les classes et autres types.


5

C'est un espace réservé pour le premier paramètre qui, dans votre cas, est évalué à "wordpad.exe".

Si vous aviez un paramètre supplémentaire, vous utiliseriez {1}, etc.


4

C'est un espace réservé pour un paramètre tout comme le %sspécificateur de format agit à l'intérieur printf.

Vous pouvez également commencer à ajouter des éléments supplémentaires pour déterminer le format, bien que cela ait plus de sens avec une variable numérique ( exemples ici ).


0

C'est ce que nous avons appelé la mise en forme composite du .NET Framework pour convertir la valeur d'un objet en sa représentation textuelle et incorporer cette représentation dans une chaîne. La chaîne résultante est écrite dans le flux de sortie.

La méthode Console.WriteLine surchargée (chaîne, objet) Écrit la représentation textuelle de l'objet spécifié, suivie de la terminaison de ligne actuelle, dans le flux de sortie standard à l'aide des informations de format spécifiées.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.