while (rdr.Read())
{
Console.WriteLine("Product: {0,-35} Total: {1,2}", rdr["ProductName"], rdr["Total"]);
}
这段代码中的{0,-35}是什么意思?C#字符串中的大括号是什么意思?
while (rdr.Read())
{
Console.WriteLine("Product: {0,-35} Total: {1,2}", rdr["ProductName"], rdr["Total"]);
}
这段代码中的{0,-35}是什么意思?C#字符串中的大括号是什么意思?
更简单的线将是:
Console.WriteLine("{0}", 5);
该函数接受任何数量的参数。它们将被插入相应索引处的字符串中。在这种情况下,索引0保存整数5.结果是字符串“5”。
现在,您可以选择指定格式字符串以及索引。像这样:
Console.WriteLine("{0:0.00}", 5);
这格式化5
与0.00
,导致5.00
。
这就是数字的情况,但我认为这些更容易解释。对于字符串,“格式”意味着对齐。另请注意,您使用逗号而不是冒号来分隔索引和格式。
alignment(可选):这表示字符串的最小长度。 正立值,字符串参数将右对齐,如果 字符串不够长,字符串将填充空格在左边 。 否定值,字符串参数将被保留 ,如果字符串不够长,字符串将填充 空间在右边。如果未指定此值,我们将默认 为字符串参数的长度。
因此,在你例如:
{0,-35}
意味着串具有至少为35个字符,leftjustified(在端空间填充)。{1,2}
表示字符串必须至少有2个字符,rightjustified(前面的空格填充)。这些括号是值为字符串的占位符。
因此,rdr["ProductName"]
将被格式化为字符串的第一个括号。并且rdr["Total"]
将被格式化为字符串的第二个括号。
提供这样的:
rdr["ProductName"] = "My Product";
rdr["Total"] = 2.98;
然后你会输出到控制台:
产品:我的产品总计:2.98
问题更新后:
The {0,-35}
部分如果为了对齐的目的。有关格式化和对齐的更多信息on C#'s official documentation。
感谢您的回复,但那么0,35和1,2是什么意思 – rosebrit3 2012-03-19 11:32:55
对于字符串,它是用于对齐的信息。 – 2012-03-19 11:33:48
它是对齐串空间
要对齐串向右或向左使用静态方法的String.Format。要将字符串与左侧对齐(右侧空格),请使用带逗号(,)的格式化模板,后跟负数字符:String.Format(“{0,-10}”,text)。要正确对齐,请使用正数:{0,10}。
看看
那些{}
支架的字符串格式化的目的。例如,你的情况rdr [“ProductName”] 已经给出了一个格式说明符{0,-35} ...,它将与填充到右边的空格左对齐。
像"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
(负数),产品名称将左对齐。
使用你不明白的代码是不明智的。我建议你在哪里找到这个代码,问作者。 – 2012-03-19 15:26:02