有什么方法可以在编译时检查格式字符串吗?

例子:

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.
有帮助吗?

解决方案

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

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

其他提示

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

虽然不是真正的编译时检查, ReSharper的可以提醒你在Visual Studio当参数的数目是错误的或格式字符串是在错误的格式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top