CA1305: int.Parse (String) - PullRequest
       9

CA1305: int.Parse (String)

4 голосов
/ 12 июня 2009

Я получаю предупреждение CA1305.

Microsoft. Глобализация: потому что поведение int.Parse (string) может варьироваться в зависимости от настройки локали текущего пользователя, заменить этот вызов в «_Default.CalculateImageButton_Click (объект, ImageClickEventArgs) 'с призывом к «Int.Parse (строка, IFormatProvider). Если результат «Int.Parse (строка, IFormatProvider) 'будет отображаться для пользователь, укажите «CultureInfo.CurrentCulture» как Параметр «IFormatProvider». В противном случае, если результат будет хранятся и доступны с помощью программного обеспечения, таких как как, когда он сохраняется на диск или базу данных, укажите 'CultureInfo.InvariantCulture'.

Что именно может пойти не так, если я опущу указание культуры при разборе Int32?

Ответы [ 2 ]

10 голосов
/ 12 июня 2009

Это означает, что когда вы читаете «1,234» из файла данных или записи базы данных, а затем пытаетесь привести его к Int через Parse, вы получите 1234 в Америке и 1 в Германии. Предупреждение дает хороший совет - если вы взаимодействуете с пользователем, укажите CurrentCulture (спасибо, Эндрю!), А если вы взаимодействуете с файловой системой или базой данных (или чем-нибудь!

2 голосов
/ 12 июня 2009

Если вы анализируете целое число, оно может иметь тысячи разделителей, которые могут быть "," или "." в зависимости от локали.

...