.ToString () и .ToString (CultureInfo.CurrentCulture) - PullRequest
3 голосов
/ 15 февраля 2012

Я должен использовать .ToString(CultureInfo.CurrentCulture) в каждом преобразовании числа в строку, например.Могу ли я каким-то образом переопределить .ToString(), чтобы я больше не получал больше сообщений, таких как культура, в явном виде при преобразовании строк?

Например, теперь мне приходится менять каждые

myNumValue.Count.ToString();

на

myNumValue.Count.ToString(CultureInfo.CurrentCulture);

Ответы [ 5 ]

9 голосов
/ 15 февраля 2012

Нет смысла заменять ToString() на ToString(CultureInfo.CurrentCulture), потому что это именно то, что ToString() уже делает.

Если вы не указали определенную культуру (возможно, через пользователявыделение) в ваш код просто придерживайтесь первого метода.

5 голосов
/ 15 февраля 2012

Смысл этого правила - сделать явный выбор языка для каждой операции форматирования и синтаксического анализа. Если вы попытаетесь систематически поменять реализации, чтобы «обмануть» правило, вы просто в конечном итоге обнаружите потенциальные проблемы под ковриком. Как предлагает Лонли-Локли, вы можете рассмотреть возможность использования методов расширения, если вам не нравится читать вызовы ToString с аргументами культуры, но у вас должен быть отдельный метод расширения для каждой поддерживаемой культуры. например: ToUIString () -> ToString (CultureInfo.CurrentCulture) и ToInvariantString () -> ToString (CultureInfo.InvariantCulture)

3 голосов
/ 15 февраля 2012

Если вы имеете в виду сообщение от Code Analysis, то вы можете отключить определенное правило.

2 голосов
/ 15 февраля 2012

Вы можете создать метод расширения ToStringEx и вызвать обычный метод с указанной культурой.

0 голосов
/ 08 апреля 2014

Вы можете написать методы расширения ToStringInvariant и ToStringCurrent с одним переопределением для каждого типа для преобразования: int, double, decimal и т. Д. Копирование и вставка занимает считанные минуты.DateTime в конечном итоге может быть обработан таким же образом.

...