4

Is there any way to to add custom compile time errors when there is a mismatch in number of arguments passed to String.Format in C#

Eg:

String.Format("{0} and {1} are my pets", animal);

the above line should throw an error since we have passed only one argument "animal" , while it is expecting two {0},{1}.. but in reality it throws just run time errors.

4

5 回答 5

4

FxCop / Code Analysis 会解决这个问题。是的,您可以在 VS Premium / Ultimate 的编译时执行此操作。

在此处输入图像描述

于 2012-04-27T12:10:17.977 回答
3

Resharper 会为此添加一个 IDE 警告。但是,这不是编译器错误。就编译器而言,您所写的内容非常好。

在此处输入图像描述

于 2012-04-27T12:10:03.317 回答
1

这是一个糟糕的想法,但是您可以创建五个左右的扩展方法,称为Format1,Format2等,并将参数硬编码并传递给普通的String.Format.

于 2012-04-27T14:29:01.923 回答
1

您不能添加自定义编译时错误。这是一个逻辑错误,会抛出异常

编辑:

Console.WriteLine(string.Format("test{0} and {1}","test"));

它会抛出:

索引(从零开始)必须大于或等于零且小于参数列表的大小

于 2012-04-27T12:10:44.510 回答
0

格式字符串是 .NET 类库中某些方法的功能。编译器对它们一无所知。编译器只能抛出与语言本身有关的错误,而不是你如何调用某些库函数。

于 2012-04-27T12:16:26.337 回答