formato string- verificação de tempo de compilação
-
19-09-2019 - |
Pergunta
Existe alguma maneira de verificar a cadeia de formato em tempo de compilação?
Exemplo:
Console.WriteLine("{0} is a really {1} site", "stackoverflow.com", "cool");//this will run
// isso vai dar uma exceção como apenas um argumento for fornecido
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."
e se string de formato não está no formato correto (ou seja, faltando o "}" após 1 aqui)
Console.WriteLine("{0} is a really {1 site", "stackoverflow.com","cool");
Exception: Input string was not in a correct format.
Solução
Não, você não pode incluir a verificação em tempo de compilação aqui. Este é um dos down-lados para seqüências de recursos e strings de formatação. Você pode fazer algumas coisas para mitigar o problema.
- testar exaustivamente unidade de suas interfaces públicas para ter certeza de que suas cordas estão sendo formatado corretamente.
- Use ferramentas como ReSharper que podem executar a análise estática e permitem que você sabe sobre estes problemas antes de executar o aplicativo.
- As coisas são melhores trios.
Outras dicas
Não, não há nenhuma maneira de fazer isso. Unidade testar resolve este problema.
Embora não seja realmente em tempo de compilação verificação, ReSharper pode avisá-lo no Visual Studio quando o número de argumentos está errado ou a cadeia de formato está no formato errado.