问题:初学C#,按书上例子写这个小程序
using System;
class Test
{
stativ void
{
int[] arr=new int[5];
for (int i=0;i<arr.Length;i++)
arr[i]=i*i;
for (int i=0;i<arr.Length;i++)
Console.WriteLine("arr[{0}]={1}",i,arr[i]);
}
}
其中这一句 Console.WriteLine("arr[{0}]={1}",i,arr[i]);输出格式是什么意思?
解答:
Console.WriteLine("arr[{0}]={1}",i,arr[i]);中{0},{1}分别表示第一个和第二个参数,这里代表i,arr[i]
因为Console.WriteLine()关于字符串格式化的部分是用String.Format来实现的,所以可以看String.Format的文档:
通过 .NET Framework 复合格式化功能,您可以提供值列表和由交替出现的固定文本和索引占位符组成的源字符串,还能轻松地获得由夹杂着格式化值的原始固定文本组成的结果字符串。复合格式化可以用于一些方法,如 String.Format(返回格式化字符串)方法和 Console.WriteLine(将输出字符串显示到控制台)方法等,也可用于 TextWriter.WriteLine(将输出字符串写到流或文件)的实现。
每个索引占位符或格式项都对应值列表中的一个元素。复合格式化功能返回新的输出字符串,其中嵌入源字符串的每个格式项都被对应的格式化值替换。
源字符串包含被一个或多个格式项分隔开的零个或多个固定文本段。固定文本可以包含您选择的任何内容。
下面是一个 String.Format 示例。
[Visual Basic]
Dim myName As String = "Fred"
String.Format("Name = {0}, hours = {1:hh}", myName, DateTime.Now)
[C#]
string myName = "Fred";
String.Format("Name = {0}, hours = {1:hh}", myName, DateTime.Now);
固定文本是"Name ="和", hours =",格式项是"{0}"和"{1:hh}",值为 myName 和 DateTime.Now。
格式项语法
所有格式项都采用下面的形式。
{index[,alignment][:formatString]}
必须使用成对的大括号("{"和"}")。因为左右大括号分别被解释为格式项的开始和结束,所以要在固定文本中显示一个左括号("{"),必须指定两个左括号("{{");要在固定文本中显示一个右括号("}"),必须指定两个右括号("}}")。
格式项由下面的组件构成。
索引组件
强制"索引"组件(也叫参数说明符)是一个从 0 开始的数字,可标识值列表中对应的元素。也就是说,参数说明符为 0 的格式项格式化列表中的第一个值,参数说明符为 1 的格式项格式化列表中的第二个值,依次类推。
通过指定相同的参数说明符,多个格式项可以引用值列表中的同一个元素。例如,通过指定类似于"{0:X} {0:E} {0:N}"的源字符串,可以将同一个数值格式化为十六进制、科学表示法和数字格式。
每一个格式项都可以引用所有的参数。例如,如果有三个值,则可以通过指定类似于"{1} {0} {2}"的源字符串来格式化第二、第一和第三个值。格式项未引用的值会被忽略。如果参数说明符指定了超出值列表范围的项,将导致运行时异常。
对齐组件
可选的"对齐"组件是一个带符号的整数,指示首选的格式化字段宽度。如果"对齐"值小于格式化字符串的长度,"对齐"会被忽略,并且使用格式化字符串的长度作为字段宽度。如果"对齐"为正数,字段的格式化数据为右对齐;如果"对齐"为负数,字段的格式化数据为左对齐。如果需要填充,则使用空白。如果指定"对齐",就需要使用逗号。
格式字符串组件
可选的"格式字符串"组件由标准或自定义格式说明符组成。如果不指定"格式字符串",则使用常规("G")格式说明符。如果指定"格式说明符",需要使用冒号。
以上文档摘自ms-help://MS.NETFrameworkSDKv1.1.CHS/cpguidenf/html/cpconcompositeformatting.htm
如果不是2003中文版,请截取cpguidenf/html/cpconcompositeformatting.htm
没有评论:
发表评论