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.
Foi útil?

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.

  1. testar exaustivamente unidade de suas interfaces públicas para ter certeza de que suas cordas estão sendo formatado corretamente.
  2. 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.
  3. 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top