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

这段代码中的{0,-35}是什么意思?C#字符串中的大括号是什么意思?

+0

使用你不明白的代码是不明智的。我建议你在哪里找到这个代码,问作者。 – 2012-03-19 15:26:02

回答

7

更简单的线将是:

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

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

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

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

这格式化50.00,导致5.00

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

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

因此,在你例如:

  • {0,-35}意味着串具有至少为35个字符,leftjustified(在端空间填充)。
  • {1,2}表示字符串必须至少有2个字符,rightjustified(前面的空格填充)。

我推荐this article,以及string.Format documentation

7

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

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

提供这样的:

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

然后你会输出到控制台:

产品:我的产品总计:2.98

问题更新后:

The {0,-35}部分如果为了对齐的目的。有关格式化和对齐的更多信息on C#'s official documentation

+0

感谢您的回复,但那么0,35和1,2是什么意思 – rosebrit3 2012-03-19 11:32:55

+0

对于字符串,它是用于对齐的信息。 – 2012-03-19 11:33:48

3

它是对齐串空间

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

看看

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

+0

-1请证明 – 2012-03-19 11:35:04

+0

它现在已经更新,它不是-1 :) – rosebrit3 2012-03-19 11:38:33

+0

虽然这只是一半的答案。是的,'-35'用于对齐,但这不是格式字符串占位符的唯一目的。 – Joey 2012-03-19 12:11:00

2

那些{}支架的字符串格式化的目的。例如,你的情况rdr [“ProductName”] 已经给出了一个格式说明符{0,-35} ...,它将与填充到右边的空格左对齐。

6

"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(负数),产品名称将左对齐。

相关问题