我希望您能帮助我理解下面的C#代码为什么无法工作。
//string[] array = new string[] { "a", "b", "c", "d" }; // this array works
var array = new [] {
new DateTime(2000, 1, 1),
new DateTime(2010, 12, 31)
};
var format = "{0:MMM}{1:MMM}";
Console.WriteLine(string.Format(format, array)); // compiles, but crashes at runtime
编译没有问题,但在执行时出现以下错误:
运行时异常(第15行):索引(从零开始)必须大于或等于零,并且小于参数列表的大小。
堆栈跟踪:[System.FormatException:索引(从零开始)必须大于或等于零,并且小于参数列表的大小。] 在 System.Text.StringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args) 在 System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) 在 System.String.Format(String format, Object arg0) 在 Program.Main() :line 15
我期望接受对象数组的String.Format重载方法能够像处理字符串数组一样处理DateTime数组,但是我是否有什么误解?
string.Format(format, date1, date2)
。 - Martin CostelloConsole.WriteLine
中调用string.Format
,只需使用Console.WriteLine(format, array);
即可。 - Pavel Anikhouski