Quelqu'un pourrait-il donner un exemple pour démontrer l'utilisation de la culture invariante ? Je ne comprends pas ce que décrit la documentation.
Quelqu'un pourrait-il donner un exemple pour démontrer l'utilisation de la culture invariante ? Je ne comprends pas ce que décrit la documentation.
Réponses:
La culture invariante est une culture spéciale qui est utile car elle ne changera pas. La culture actuelle peut changer d'un utilisateur à un autre, ou même d'une exécution à une autre, vous ne pouvez donc pas vous fier à ce qu'elle reste la même.
Pouvoir utiliser la même culture à chaque fois est très important dans plusieurs flux, par exemple, la sérialisation: vous pouvez avoir 1,1 valeur dans une culture et 1,1 dans une autre. Si vous essayez d'analyser la valeur «1,1» dans la deuxième culture, l'analyse échouera. Cependant, vous pouvez utiliser la culture invariante pour convertir un nombre en chaîne et l'analyser ultérieurement à partir de n'importe quel ordinateur avec un ensemble de cultures.
// Use some non-invariant culture.
CultureInfo nonInvariantCulture = new CultureInfo("en-US");
Thread.CurrentThread.CurrentCulture = nonInvariantCulture;
decimal dec = 1.1m;
string convertedToString = dec.ToString();
// Simulate another culture being used,
// following code can run on another computer.
nonInvariantCulture.NumberFormat.NumberDecimalSeparator = ",";
decimal parsedDec;
try
{
// This fails because value cannot be parsed.
parsedDec = decimal.Parse(convertedToString);
}
catch (FormatException)
{
}
// However you always can use Invariant culture:
convertedToString = dec.ToString(CultureInfo.InvariantCulture);
// This will always work because you serialized with the same culture.
parsedDec = decimal.Parse(convertedToString, CultureInfo.InvariantCulture);
System.Globalization
espace de noms.
CultureInfo.InvariantCulture
fonctionne parce que vous avez sérialisé avec la même culture ... alors n'est-ce pas la même chose que l'utilisation CultureInfo.CurrentCulture
?
CultureInfo.InvariantCulture
vous savez que vous serez toujours en mesure d'analyser en retour à une décimale en utilisant CultureInfo.InvariantCulture
. Si vous utilisez CultureInfo.CurrentCulture
pour sérialiser, votre utilisateur peut avoir "en-US" comme culture actuelle. Le prochain utilisateur qui va l'analyser en une décimale peut avoir une culture actuelle qui utilise "," comme séparateur.
Une fausse culture basée sur l'anglais avec un comportement défini. Idéal pour écrire, par exemple, des éléments dans des fichiers de configuration afin qu'ils puissent être lus et écrits quelle que soit la culture définie par l'utilisateur.
Fondamentalement, c'est une culture spécifique qui est artificielle et qui ne changera pas .
Il est utilisé pour des choses qui sont les mêmes quelle que soit la culture (qui n'a pas besoin d'être traduit dans une culture X pour être appropriée)
comme exemple - https://msdn.microsoft.com/en-us/library/4c5zdc6a(v=vs.100).aspx . Lorsque vous écrivez un fichier spécifique à une application avec lequel l'utilisateur ne devrait pas jouer, vous devez utiliser InvariantCulture pour toutes les méthodes qui prennent un paramètre de culture.
Notez que selon les documents liés ci-dessus:
Toutefois, une application doit utiliser la culture invariante uniquement pour les processus qui nécessitent des résultats indépendants de la culture, tels que la mise en forme et l'analyse des données qui sont conservées dans un fichier.
La culture invariante est insensible à la culture; il est associé à la langue anglaise mais pas à un pays / une région.
CultureInfo.InvariantCulture récupère une instance de la culture invariante. Il peut être utilisé dans presque toutes les méthodes de l'espace de noms System.Globalization qui nécessitent une culture.
Les objets renvoyés par des propriétés telles que CompareInfo, DateTimeFormat et NumberFormat reflètent également la comparaison de chaînes et les conventions de mise en forme de la culture invariante. La propriété InvariantCulture est pratique lorsque vous souhaitez afficher des données persistantes dans un format indépendant de la culture .
Par exemple, si vous souhaitez afficher un nombre ou une date / heure dans un format spécifique indépendant de la culture actuelle de l'application, vous pouvez utiliser CultureInfo.InvariantCulture .
C'est une langue anglaise universelle simple non spécifique à la région et d'autres informations connexes. C'est comme le langage du langage de programmation lui-même. Vous pouvez vous y fier pour mettre en place un calendrier universel; dans une situation où vous devez générer des noms de contrôleurs, des URL, des noms de délégués ... etc. et ont besoin que les choses agissent naturellement et universellement parmi tous les utilisateurs.