Как правило, лучше всего использовать & mdash; StringComparison.OrdinalIgnoreCase или StringComparison.InvariantCultureIgnoreCase?

Строковые литералы имеют формальный тип char [], но семантический тип const char []. Пуристы ненавидят его, но это вообще полезно и безвредно, за исключением того, что приносят много новичков к SO с «ПОЧЕМУ МОЙ ПРОГРАММИРУЮЩИЙ ПРОГРАММА?!?!» вопросы.

140
задан Arjan Einbu 18 October 2017 в 19:45
поделиться

4 ответа

Более новые.Net Документы теперь имеют таблицу, чтобы помочь Вам решить, который является лучшим для использования в ситуации.

Из MSDN" Новые Рекомендации для Использования Строк в Microsoft.NET 2.0 "

Сводка: Кодируйте владельцев, ранее использующих InvariantCulture для сравнения строк, преобразования регистра, и сортировка должна сильно рассмотреть использование нового набора String перегрузки в Microsoft.NET 2.0. А именно, данные, которые разработаны, чтобы быть агностическими культурой и лингвистически не важные , должны начать определять перегрузки с помощью или StringComparison.Ordinal или StringComparison.OrdinalIgnoreCase члены нового StringComparison перечисление. Они осуществляют сравнение байта байтом, подобное strcmp, который не только избегает ошибок от лингвистической интерпретации чрезвычайно символьных строк, но обеспечивает лучшую производительность.

153
ответ дан Robert Taylor 18 October 2017 в 19:45
поделиться

MSDN предоставляет некоторые довольно четкие рекомендации об этом: http://msdn.microsoft.com/en-us/library/ms973919.aspx

8
ответ дан chessguy 18 October 2017 в 19:45
поделиться

Я предполагаю, что это зависит от Вашей ситуации. Так как порядковые сравнения на самом деле смотрят на числовые значения Unicode символов, они не будут лучшим выбором, когда Вы отсортируете в алфавитном порядке. Для сравнений строк, тем не менее, порядковых, было бы немного быстрее.

3
ответ дан Bullines 18 October 2017 в 19:45
поделиться

Это зависит от того, что Вы хотите, хотя я уклонился бы от invariantculture, если Вы не будете очень уверены, что Вы никогда не будете хотеть локализовать код для других языков. Используйте CurrentCulture вместо этого.

кроме того, OrdinalIgnoreCase должен уважать числа, которые могут или не могут быть тем, что Вы хотите.

1
ответ дан Joel Coehoorn 18 October 2017 в 19:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: