格式字符串 - 编译时间检查

时间:2010-01-08 16:26:39

标签: c# .net string string.format

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

示例:

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.

3 个答案:

答案 0 :(得分:4)

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

  1. 彻底对您的公共接口进行单元测试,以确保您的字符串格式正确。
  2. 使用ReSharper之类的工具来执行静态分析,并在运行应用程序之前让您了解这些问题。
  3. 事情好三分。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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