visual-studio-2019 - Visual Studio 2019 IDE 关于 String.Format 参数的警告
问题描述
我们的团队将使用 Visual Studio 2010 开发的大型项目升级到 Visual Studio 2019。其中一名团队成员使用String.Format(String, Object[])
和 将一组对象传递给该方法,而团队的其他成员则String.Format
通过将对象作为单独的参数传递来使用该方法。
这只是在 Visual Studio 2010 中开发时的风格偏好问题;但在 Visual Studio 2019 中,任何使用String.Format(String, Object[])
传递数组的地方都会导致出现 IDE 警告。
由于项目很大,这些虚假警告的数量很多,通过代码“修复”未损坏的东西是不可取的;但是,这些警告确实隐藏了字符串格式与参数不正确匹配的情况(导致运行时错误)。
更奇怪的是,如果运行应用程序的计算机未使用 .NET Framework 4.8,则这些代码行实际上会引发 String.Format 异常。这对我来说没有意义,因为这个版本的 String.Format 方法在 WELL 4.8 之前就已经存在了。
这是我正在谈论的一个例子。
请注意第 9 行有 2 个警告,关于传递给 String.Format 方法的参数数量与格式中预期的数量不匹配。
在第 12 行没有警告:因为 String.Format 方法正在传递单个参数参数而不是数组。
有没有人知道为什么这会导致使用带有 .NET 版本 4.8 的 Visual Studio 2019 出现问题?或者有一个关于如何纠正这个问题的建议(最好是不需要修改一个团队成员使用他们调用 String.Format 方法的风格的每一行代码)。
编辑: 更新,在玩这个多一点,我发现如果数组没有声明为内联(它是事先声明的),没有错误。这在传递字符串数组和对象数组时有效。
这只会使 IDE 警告更加奇怪......
解决方案
推荐阅读
- php - 在 php 页面中嵌入 javascript
- c++ - 用一对对排序 STL 容器
- css - CSS:缩放字体一个恒定的因素
- java - 为什么login_register在满足变量后不运行?
- r - R:使用行/列替换另一个数据框的值
- android-workmanager - 如何在工作管理器中传递超过 1024 字节的数据?
- php - 如何使用 HTML 表格中的某些单元格并将其放入新表格中
- assembly - Netwide Assembler (NASM) 中的“netwide”是什么意思?
- unity3d - 从 OnTriggerEnter 检测对象的对撞机?
- ios - 转换到根视图控制器的问题