Вопрос

Есть ли какой - нибудь способ проверить строку формата во время компиляции ?

Пример:

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.
Это было полезно?

Решение

Нет, вы не можете добавить сюда проверку во время компиляции.Это один из недостатков строк ресурсов и строк форматирования.Вы можете сделать несколько вещей, чтобы смягчить вашу проблему.

  1. Тщательно модульно протестируйте ваши общедоступные интерфейсы, чтобы быть уверенным в том, что ваши строки отформатированы правильно.
  2. Используйте такие инструменты, как Перетачиватель это может выполнить статический анализ и сообщить вам об этих проблемах до того, как вы запустите свое приложение.
  3. Втроем дела обстоят лучше.

Другие советы

Нет, нет никакого способа сделать это.Модульное тестирование решает эту проблему.

Хотя на самом деле это не проверка во время компиляции, Перетачиватель может предупредить вас в Visual Studio, когда количество аргументов неверно или строка формата находится в неправильном формате.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top