2009-02-09 168 views
66

在这样的词典:在C#中的字符串中发现{0}是什么意思?

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

输出是:

用于键= “RTF格式” 值= wordpad.exe

什么是{0}是什么意思?

回答

146

您正在打印格式化的字符串。 {0}表示在格式字符串后面插入第一个参数;在这种情况下是与关键字“rtf”相关联的值。

有关的String.Format,这是类似的,如果你有这样的事情

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

你创建一个字符串“是一个测试,这个值是”。

您也可以使用表达式,并打印值重复多次:

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

产生 “FIB:,,,”

查看更多在http://msdn.microsoft.com/en-us/library/txafckwd.aspx,谈论复合格式。

5

它是第一个参数的占位符,在你的情况下它的计算结果为“wordpad.exe”。

如果你有一个额外的参数,你会使用{1}

4

它是很像内printf%s格式说明行为参数的占位符。

您可以在其中添加额外的东西来确定格式,尽管这对数值变量更有意义(examples here)。

+3

链接似乎无法正常工作 - 小心修复它 – 2016-12-15 17:59:05

18

它是字符串中的占位符。

例如,

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

而你仍然会得到相同的输出。

10

除了您希望打印的值,{0} {1}等,您可以指定一种格式。例如,{0,4}将是一个填充到四个空格的值。

有一些内置的格式说明符,此外,你可以自己做。对于体面的教程/列表,请参阅String Formatting in C#。此外,还有一个常见问题here

6

为了将来的参考,在Visual Studio中,您可以尝试将光标放在方法名称中(例如,WriteLine),然后按F1来获得该上下文的帮助。在这种情况下,挖掘周围应该找到你String.Format(),有很多有用的信息。

注意突出一个选择(例如,双击或做一拖选),打F1只做非上下文字符串搜索(这往往在发现任何有用的吸吮),所以一定要确保您只需将光标定位在单词的任何位置而不突出显示它。

这对于类和其他类型的文档也很有帮助。

相关问题