строка формата - проверка во время компиляции
-
19-09-2019 - |
Вопрос
Есть ли какой - нибудь способ проверить строку формата во время компиляции ?
Пример:
Console.WriteLine("{0} is a really {1} site", "stackoverflow.com", "cool");//this will run
//это приведет к исключению, поскольку указан только один аргумент
Console.WriteLine("{0} is a really {1} site", "stackoverflow.com");
Exception:"Index (zero based) must be greater than or equal to zero and less than the size of the argument list."
и если строка формата не в правильном формате (т.е.здесь отсутствует "}" после 1 )
Console.WriteLine("{0} is a really {1 site", "stackoverflow.com","cool");
Exception: Input string was not in a correct format.
Решение
Нет, вы не можете добавить сюда проверку во время компиляции.Это один из недостатков строк ресурсов и строк форматирования.Вы можете сделать несколько вещей, чтобы смягчить вашу проблему.
- Тщательно модульно протестируйте ваши общедоступные интерфейсы, чтобы быть уверенным в том, что ваши строки отформатированы правильно.
- Используйте такие инструменты, как Перетачиватель это может выполнить статический анализ и сообщить вам об этих проблемах до того, как вы запустите свое приложение.
- Втроем дела обстоят лучше.
Другие советы
Нет, нет никакого способа сделать это.Модульное тестирование решает эту проблему.
Хотя на самом деле это не проверка во время компиляции, Перетачиватель может предупредить вас в Visual Studio, когда количество аргументов неверно или строка формата находится в неправильном формате.
Не связан с StackOverflow