строка формата - проверка времени компиляции

2

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

Пример:

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.
Теги:
string
string.format

3 ответа

4
Лучший ответ

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

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

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

2

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню