如果格式字符串的全文是静态的并且在编译时已知,那么缺少格式字符串参数不应该是编译时错误,或者至少是警告吗?
ReSharper 捕捉到了这一点,但它只是一个带下划线的波浪线。我的印象是这会触发一般的编译时错误:
string x = string.Format("soeuotnh {0}");
有什么方法可以触发对此类错误的警告,而无需通过 FxCop 或其他方式运行我的代码?即使是 C/C++ 编译器也会针对如此明显的错误触发警告/错误(尽管它们通常不会检查类型安全)。
最佳答案
它可能是一个警告,但应该是吗?好吧,我想这取决于编译器团队,String.Format
不是 C# 语言 的一部分。
这不是 C;你没有调用未定义的行为或任何东西,该方法可以简单地处理丢失的参数并且假设是(我假设......)当它抛出异常时你会很快捕获它。这没有什么“危险”,这只是一个逻辑错误。
关于c# - 缺少格式字符串参数不应该是编译时错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10195236/