Lorsque les nombres, les dates et les heures sont au format en chaînes ou analysés à partir de chaînes de caractères d'une culture est utilisée pour déterminer comment il est fait. E. g. dans la dominante en-US
culture que vous avez ces représentations de chaîne:
- De 1 000 000.00 - un million à deux chiffres) fraction
- 1/29/2013 - la date de cette publication
Dans ma culture (da-DK
) les valeurs ont cette représentation de chaîne:
- 1.000.000,00 - un million à deux chiffres) fraction
- 29-01-2013 - la date de cette publication
Dans le système d'exploitation Windows, l'utilisateur peut même personnaliser la façon dont les nombres et les dates/heures sont formatés et peuvent également choisir une autre culture que la culture de son système d'exploitation. La mise en forme d'utilisation est le choix de l'utilisateur, qui est la façon dont il devrait être.
Ainsi, lorsque vous formatez une valeur à afficher à l'utilisateur, par exemple, ToString
ou String.Format
ou analysé à partir d'une chaîne à l'aide de DateTime.Parse
ou Decimal.Parse
la valeur par défaut est d'utiliser l' CultureInfo.CurrentCulture
. Cela permet à l'utilisateur de contrôler la mise en forme.
Toutefois, une grande partie de la chaîne de mise en forme et l'analyse est en réalité pas les chaînes échangés entre l'application et l'utilisateur, mais entre la demande et certains format de données (par exemple, un fichier XML ou CSV). Dans ce cas, vous ne voulez pas utiliser CultureInfo.CurrentCulture
parce que si la mise en forme et l'analyse est effectuée avec différentes cultures, il peut casser. Dans ce cas, vous souhaitez utiliser CultureInfo.InvariantCulture
(sur la base de l' en-US
de la culture). Cela garantit que les valeurs peuvent aller sans problèmes.
La raison que ReSharper vous donne l'avertissement, c'est que certains écrivains sont pas au courant de cette distinction qui peut conduire à des résultats, mais ils n'ont jamais le découvrir, parce que leur CultureInfo.CurrentCulture
est en-US
qui a le même comportement que l' CultureInfo.InvariantCulture
. Cependant, dès que l'application est utilisée dans une autre culture où il y a une chance de l'utilisation d'une culture pour la mise en forme et l'autre pour l'analyse de la demande risque de se briser.
Donc, pour résumer:
- Utiliser
CultureInfo.CurrentCulture
(valeur par défaut) si vous êtes à la mise en forme ou de l'analyse d'une chaîne utilisateur.
- Utiliser
CultureInfo.InvariantCulture
si vous êtes à la mise en forme ou de l'analyse d'une chaîne de caractères qui doit être parseable par un morceau de logiciel.
- Rarement utiliser un spécifique de la culture nationale, car l'utilisateur est incapable de contrôler la façon dont le formatage et l'analyse est effectuée.