C# C字符串格式参数

C# C字符串格式参数,c#,C#,我知道下面的语法是有效的 String.Format("Today is {0}, {1}", day,month); 我只是好奇这种格式是如何工作的 String.Format("Today is {day}, {month}", day,month); C如何解释用用户定义的名称替换数字 String.Format("Today is {day}, {month}", day,month); ,它抛出System.FormatException 根据需要,替换字段的格式必须为{inde

我知道下面的语法是有效的

String.Format("Today is {0}, {1}", day,month);
我只是好奇这种格式是如何工作的

String.Format("Today is {day}, {month}", day,month);
C如何解释用用户定义的名称替换数字

String.Format("Today is {day}, {month}", day,month);
,它抛出System.FormatException


根据需要,替换字段的格式必须为{index[,alignment][:formatString]},您的第二个示例没有遵循该格式。

在{}中的项必须是从0开始的整数,并且与.format第二个参数中的变量数相匹配。。。方法下载一个程序,比如LinqPad,来运行这样的测试脚本。

我只是好奇这种格式是如何工作的。。。它没有。它做了一些类似的事情,但这是一个特例。你在哪里看到了一些让你认为第二种格式可以工作的东西。也许我们可以用更多的上下文来解释发生了什么@ClickRick我还可以看到他在看一些处理URI的属性,比如数组,如果你在例子2中passlike参数day放在索引0和month索引1,占位符会把相应的值放在字符串上,您将看到第一个月和第二天…并且,简单地考虑数组示例,您不能有比参数更多的占位符,或者您将得到formatexception…True,但是使用建议的字符串插值功能,更像$Today是{day},{month}。