2

有没有办法在编译时检查格式字符串?

例子:

Console.WriteLine("{0} is a really {1} site", "stackoverflow.com", "cool");//this will run

//这将给出一个异常,因为只提供了一个参数

Console.WriteLine("{0} is a really {1} site", "stackoverflow.com");

Exception:"Index (zero based) must be greater than or equal to zero and less than the size of the argument list."

并且如果格式字符串的格式不正确(即此处缺少 1 之后的“}”)

Console.WriteLine("{0} is a really {1 site", "stackoverflow.com","cool");

Exception: Input string was not in a correct format.
4

3 回答 3

4

不,您不能在此处添加编译时验证。这是资源字符串和格式化字符串的缺点之一。你可以做一些事情来缓解你的问题。

  1. 对您的公共接口进行彻底的单元测试,以确保您的字符串格式正确。
  2. 使用ReSharper等可以执行静态分析的工具,并在运行应用程序之前让您了解这些问题。
  3. 事情是更好的三分球。
于 2010-01-08T16:31:00.157 回答
2

不,没有办法做到这一点。单元测试解决了这个问题。

于 2010-01-08T16:28:37.760 回答
2

虽然不是真正的编译时检查,但当参数数量错误或格式字符串的格式错误时, ReSharper可以在 Visual Studio 中向您发出警告。

于 2010-01-08T16:28:47.560 回答