Pergunta

Como você acha que é realmente necessário para fornecer IFormatProvider em String.Format(string, object) método?

É melhor escrever variante completa

String.Format(CultureInfo.CurrentCulture, "String is {0}", str);

ou apenas

String.Format("String is {0}", str);

?

Foi útil?

Solução

Em geral, você vai querer usar InvariantCulture se a corda que você está gerando deve ser mantido em um caminho que é independente da cultura atual do usuário (por exemplo, no registro, ou em um arquivo).

Você vai querer usar CurrentCulture para cordas que estão a ser apresentado na interface do usuário para o usuário atual (formulários, relatórios).

erros sutis podem surgir se você usar o CurrentCulture onde você deve usar InvariantCulture:. Bugs que só vêm à tona quando você tem vários usuários com diferentes culturas acessando a mesma entrada de registro ou arquivo, ou se um usuário muda de cultura padrão

Especificando explicitamente CurrentCulture (o padrão se o argumento IFormatProvider é omitido), é essencialmente documentação que demonstra que você considerou o exposto, e que a corda que está sendo gerado deve usar a cultura do usuário atual. É por isso que FxCop recomenda que você deve especificar o argumento IFormatProvider.

Outras dicas

Se você não especificar o IFormatProvider (ou equivalentemente passar null) a maioria dos tipos de argumento acabará por cair de ser formatado de acordo com CultureInfo.CurrentCulture. Onde fica interessante é que você pode especificar um IFormatProvider personalizado que pode obter primeira rachadura na formatação dos argumentos, ou substituir a cultura formatação dependendo outro contexto.

Note que CultureInfo.CurrentCulture afeta argumento formatação, não de seleção de recursos; seleção de recursos é controlada por CultureInfo.CurrentUICulture.

Não, você não precisa especificar a cultura, a menos que sua seqüência contém elementos cultura específicos, tais como separadores decimais, moeda, etc., que têm de ser processado, dependendo da cultura.

É especialmente útil se você se preocupa com a localização (Globalização) na sua aplicação. Ou seja, se você quiser que seu aplicativo para suportar vários idiomas e formatos cultura específica, então você deve usá-la.

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