Подтвердить что ты не робот

String.ToLower() и string.ToLowerInvariant()

Какая разница и когда использовать что? Какой риск, если я всегда использую ToLower() и какой риск, если я всегда использую ToLowerInvariant()?

4b9b3361

Ответ 1

В зависимости от текущей культуры ToLower может создать конкретную строчную букву, которую вы не ожидаете. Например, создание ınfo без точки на я вместо info и, таким образом, сбрасывание строк сравнения. По этой причине ToLowerInvariant следует использовать для любых неязыковых данных. Когда у вас может быть пользовательский ввод, который может быть в их родном языке/наборе символов, обычно будет единственным, когда вы используете ToLower.

См. этот вопрос для примера этой проблемы: С# - ToLower() иногда удаляет точку из буквы "я"

Ответ 2

Я думаю, что это может быть полезно:

http://msdn.microsoft.com/en-us/library/system.string.tolowerinvariant.aspx

Обновление

Если ваше приложение зависит от случая изменения строки предсказуемым образом, которое не зависит от текущей культуры, используйте метод ToLowerInvariant. Метод ToLowerInvariant эквивалентен ToLower (CultureInfo.InvariantCulture). Этот метод рекомендуется, когда набор строк должен отображаться в предсказуемом порядке в элементе управления пользовательским интерфейсом.

также

... ToLower очень похожа в большинстве мест на ToLowerInvariant. Документы показывают, что эти методы только изменят поведение с турецкими культурами. Кроме того, в системах Windows файловая система нечувствительна к регистру, что еще больше ограничивает ее использование...

http://www.dotnetperls.com/tolowerinvariant-toupperinvariant

HTH