CultureInfo.CurrentCulture é realmente necessário em String.Format ()?
-
19-08-2019 - |
Pergunta
Como você acha que é realmente necessário para fornecer IFormatProvider
em String.Format(string, object)
método?
É melhor escrever variante completa ??p>
String.Format(CultureInfo.CurrentCulture, "String is {0}", str);
ou apenas
String.Format("String is {0}", str);
?
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.