Если вы действительно хотите сопоставить только точку, тогда StringComparison.Ordinal
будет самым быстрым, поскольку нет разницы в регистре.
«Порядковый номер» не использует правила языка и / или регистра, которые в любом случае не применимы к символу, подобному .
.
Кажется, вы сравниваете имена файлов, поэтому я бы просто добавил, что OrdinalIgnoreCase
является ближайшим к к тому, что делает NTFS (это не совсем то же самое, но ближе, чем InvariantCultureIgnoreCase
)
Ни тот, ни другой код не всегда лучше. Они делают разные вещи, поэтому у них разные дела.
InvariantCultureIgnoreCase
использует правила сравнения на основе английского языка, но без каких-либо региональных вариаций. Это хорошо для нейтрального сравнения, которое все же учитывает некоторые лингвистические аспекты.
OrdinalIgnoreCase
сравнивает коды символов без учета культурных особенностей. Это хорошо для точных сравнений, таких как имена пользователей, но не для сортировки строк с необычными символами, такими как é
или ö
. Это также быстрее, потому что нет никаких дополнительных правил, которые нужно применить перед сравнением.
FXCop обычно предпочитает OrdinalIgnoreCase
. Но ваши требования могут отличаться.
Для английского языка разница очень небольшая.Это становится проблемой, когда вы погружаетесь в языки, которые имеют различные письменные языковые конструкции. У меня недостаточно опыта, чтобы дать вам больше.
OrdinalIgnoreCase
StringComparer, возвращаемый свойством OrdinalIgnoreCase, обрабатывает символы в строках для сравнения, как если бы они были преобразованы в верхний регистр с использованием соглашения инвариантного языка и региональных параметров, а затем выполняет простое сравнение байтов , которое не зависит от языка. Это наиболее подходит, когда сравнение строк, которые генерируются программно или при сравнении ресурсов без учета регистра, таких как пути и имена файлов. http://msdn.microsoft. com / en-us / library / system.stringcomparer.ordinalignorecase.aspx
InvariantCultureIgnoreCase
StringComparer, возвращаемый свойством InvariantCultureIgnoreCase , сравнивает строки в лингвистически релевантном способ игнорировать регистр, но он не подходит для отображения в какой-либо культуре. Его основное приложение - упорядочивание строк способом, который будет идентичным для разных культур. http://msdn.microsoft.com/ en-us / library / system.stringcomparer.invariantcultureignorecase.aspx
Инвариантный язык и региональные параметры - это объект CultureInfo, возвращаемый свойством InvariantCulture.
Свойство InvariantCultureIgnoreCase фактически возвращает экземпляр анонимного класса, производного от класса StringComparer.