花括号在C#字符串中意味着什么?

while (rdr.Read()) { Console.WriteLine("Product: {0,-35} Total: {1,2}", rdr["ProductName"], rdr["Total"]); } 

{0,-35}在此代码中的含义是什么?

一个更简单的路线是:

 Console.WriteLine("{0}", 5); 

该函数接受任意数量的参数。 它们将被插入到相应索引处的字符串中。 在这种情况下,索引零保持整数5.结果是字符串“5”。

现在,您可以选择指定格式字符串和索引。 像这样:

 Console.WriteLine("{0:0.00}", 5); 

这将5格式化为0.00 ,结果为5.00

这就是数字的情况,但我认为这些更容易解释。 对于字符串,“格式”表示对齐。 另请注意,您使用逗号而不是冒号来分隔索引和格式。

alignment(可选):这表示字符串的最小长度。 正值,字符串参数将是右对齐的,如果字符串不够长,则字符串将在左侧填充空格。 负值 ,字符串参数将保留为justied,如果字符串不够长,则字符串将在右侧填充空格。 如果未指定此值,我们将默认为字符串参数的长度。

所以在你的例子中:

  • {0,-35}表示字符串必须至少为35个字符,左对齐(末尾为空格填充)。
  • {1,2}表示字符串必须至少为2个字符,右对齐(前面的空格填充)。

我推荐这篇文章 ,以及string.Format文档 。

这些括号是值的字符串中的占位符。

因此, rdr["ProductName"]将被格式化为字符串的第一个括号。 并且rdr["Total"]将在字符串的第二个括号中格式化。

提供:

 rdr["ProductName"] = "My Product"; rdr["Total"] = 2.98; 

然后你将输出到控制台:

产品:我的产品总数:2.98

问题更新后:

{0,-35}部分用于对齐目的。 有关C#官方文档格式和对齐的更多信息。

"Product: {0,-35} Total: {1,2}"这样的字符串称为复合格式字符串

大括号内的第一个数字(从零开始)称为格式项 ,对应于复合格式字符串后面的参数的位置。 这些数字可以选择后跟逗号(,)和要应用的minimum width

最小宽度对于对齐列非常有用。 如果值为负,则结果将左对齐; 否则,它将是右对齐的。 例如:

 Console.WriteLine("Product: {0,-35} Total: {1,2}", "1stProduct", 99); Console.WriteLine("Product: {0,-35} Total: {1,2}", "SecondProduct", 111); 

结果是:

 Product: 1stProduct Total: 99 Product: SecondProduct Total: 111 

您可以看到,因为我们为产品名称指定了最小宽度为35字符,所以它们将始终占用结果字符串中的至少那么多空间,而不管它们的实际长度(在上面的示例中分别为10和13) 。 因为我们指定了-35 (负数),所以产品名称将左对齐。

它用于将空格与字符串对齐

要将字符串向右或向左对齐,请使用静态方法String.Format。 要将字符串对齐到左侧(右侧的空格),请使用带逗号(,)的格式化patern,后跟负数字符:String.Format(“{0,-10}”,text)。 要右对齐,请使用正数:{0,10}。

看一下

http://www.csharp-examples.net/align-string-with-spaces/

这些{}括号用于字符串格式化。 例如,您的案例rdr [“ProductName”]已经给出了格式说明符{0,-35} …,它将与填充到右侧的空格保持对齐。