c# - 缺少格式字符串参数不应该是编译时错误吗?

标签 c# string-formatting

如果格式字符串的全文是静态的并且在编译时已知,那么缺少格式字符串参数不应该是编译时错误,或者至少是警告吗?

ReSharper 捕捉到了这一点,但它只是一个带下划线的波浪线。我的印象是这会触发一般的编译时错误:

string x = string.Format("soeuotnh {0}");

有什么方法可以触发对此类错误的警告,而无需通过 FxCop 或其他方式运行我的代码?即使是 C/C++ 编译器也会针对如此明显的错误触发警告/错误(尽管它们通常不会检查类型安全)。

最佳答案

可能是一个警告,但应该是吗?好吧,我想这取决于编译器团队,String.Format 不是 C# 语言 的一部分。

这不是 C;你没有调用未定义的行为或任何东西,该方法可以简单地处理丢失的参数并且假设是(我假设......)当它抛出异常时你会很快捕获它。这没有什么“危险”,这只是一个逻辑错误。

关于c# - 缺少格式字符串参数不应该是编译时错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10195236/

相关文章:

python - 结合固定和区域设置表示法进行字符串格式化

c# - 是否可以为多个客户端创建单个套接字、单线程、TCP/IP 数据包读取器?

c# - ASP.NET MVC/Web API 自定义身份验证

delphi - 格式和指针/十六进制值(内存覆盖)

c# - 如何委托(delegate)给默认格式提供者?

python - 为什么 %s 在 python 中的整数替换比 %d 快?

python - 根据不同数量/长度的值/元组动态格式化字符串

c# - VB 函数 IsObject 的 C# 等效项是什么?

c# - 在 C# 中读取 PPM 图像

c# - 在 .NET 3.5 上实现 Pub/Sub 或 SignalR 功能?