在C#中,我注意到使用带有数字索引的string.Format可能很危险。我经常用它来记录。不正确的映射会导致异常:
索引(从零开始)必须大于或等于零且小于参数列表的大小。
示例:
Console.Log(string.Format("test string: var1: {0}, var2:{1}, var3:{2}", var1, var2); // using two arguments but three mappings in log string.
我觉得这样的事情可以遇到异常应该是编译器错误而不是警告。我理解.Net框架无法做到这一点,因为它接收params []中的参数。
老实说,但我确实在我的解决方案中忽略了编译器警告。 不是因为我发现它们不重要,而是因为存储库中其他人提交的代码生成了太多警告。
问题: 1.在Visual Studio中是否有一种很好的方法可以获得某些警告的编译错误。 2.我是否可以遵循更好的编码习惯来避免这样的错误。
答案 0 :(得分:2)
回答问题1. 是
您必须启用“将警告视为错误”
来源:This SO Question, from Googling我自己测试了
对问题2的回答:我认为这是非常主观的,所以它更基于意见。也许不是手动将它们键入var1,var2,var3,而是可以将它们区分为一组,使用for-loop等。
而且,单元测试。这是最重要的事情之一,即使每个人都讨厌它们。查看本书:Code Complete by Steve McConnell作为推荐资源。它也被用于许多关于程序设计和开发的大学课程中。