Question

Je reçois un avertissement de CA1305.

  

Microsoft.Globalization: Parce que la   comportement de « int.Parse (string) » pourrait varier en fonction du   Les paramètres régionaux de l'utilisateur actuel,   remplacer cet appel   « _Default.CalculateImageButton_Click (objet,   ImageClickEventArgs) » avec un appel à   « Int.Parse (string,   IFormatProvider). Si le résultat de   « Int.Parse (string,   IFormatProvider) » sera affiché à   l'utilisateur, spécifiez   « CultureInfo.CurrentCulture » comme   paramètre 'IFormatProvider'.   Dans le cas contraire, si le résultat sera   stockées et accessibles par le logiciel, tels   comme quand il est conservé sur le disque ou   une base de données, spécifiez   'CultureInfo.InvariantCulture'.

Qu'est-ce exactement peut aller mal si j'omettez la spécification de la culture lors de l'analyse Int32?

Était-ce utile?

La solution

Cela signifie que lorsque vous lisez « 1,234 » à partir d'un fichier de données ou l'enregistrement de base de données, puis essayez de le jeter à un Int via Parse, vous obtenez 1234 en Amérique et 1 en Allemagne. L'avertissement donne de bons conseils - si vous êtes en interaction avec l'utilisateur, spécifiez CurrentCulture (merci Andrew!), Et si vous êtes en interaction avec un système de fichiers ou base de données (ou quoi que ce soit utilisateur!), Utilisez InvariantCulture

Autres conseils

Si vous analysez un nombre entier, il peut avoir des séparateurs de milliers, ce qui peut être « » ou « » selon les paramètres régionaux.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top