Visual Studio 2019 IDE Предупреждения о параметрах String.Format - PullRequest
2 голосов
/ 06 марта 2020

Наша команда обновила большой проект, разработанный с использованием Visual Studio 2010, до Visual Studio 2019. Один из членов команды использует String.Format(String, Object[]) и передает массив объектов методу, в то время как остальная часть команды использует метод String.Format передавая объекты в качестве отдельных аргументов.

Это было просто вопросом стиля при разработке в Visual Studio 2010; но в Visual Studio 2019 любое место, где используется String.Format(String, Object[]), переданный массиву, приводит к появлению предупреждений IDE.

Поскольку проект большой, число этих поддельных предупреждений многочисленно и проходит через код для «исправления» того, что не сломано, не является предпочтительным; однако эти предупреждения скрывают случаи, когда формат String неправильно соответствует параметрам (вызывая ошибку времени выполнения).

Как ни странно, бывают случаи, когда эти строки кода действительно выдают исключения String.Format, если машина, на которой запущено приложение, не использует. NET Framework 4.8. Это не имеет смысла для меня, потому что эта версия метода String.Format существует с WELL до 4.8.

Вот пример того, о чем я говорю.

Замечание как в строке 9 есть 2 предупреждения о количестве аргументов, передаваемых методу String.Format, которые не соответствуют ожидаемому в формате числу.

В то время как в строке 12 предупреждений нет: поскольку метод String.Format передаются отдельные параметры аргумента вместо массива.

Кто-нибудь знает, почему это вызывает проблемы при использовании Visual Studio 2019 с. NET Версия 4.8? Или предложите, как исправить эту проблему (желательно ту, которая не требует изменения каждой строки кода, когда один член команды использовал свой стиль вызова метода String.Format).

enter image description here

Редактировать: Обновив, поиграв с этим немного больше, я обнаружил, что если массив не объявлен встроенным (он объявлен заранее), ошибок нет , Это сработало при передаче массива строк и массива объектов.

Это просто делает предупреждение IDE еще более странным ....

enter image description here

...