Я пытаюсь получить связь между результатами сравнения строк при использовании StringComparer.OrdinalignoreCase
и StringComparer.InvariantCultureIgnoreCase
. Точнее, я хотел бы знать, какие из следующих четырех утверждений:Взаимосвязь между StringComparer.OrdinalignoreCase и StringComparer.InvariantCultureIgnoreCase
a == b using StringComparer.OrdinalIgnoreCase
, затемa == b using StringComparer.InvariantCultureIgnoreCase
a != b using StringComparer.OrdinalIgnoreCase
, затемa != b using StringComparer.InvariantCultureIgnoreCase
a == b using StringComparer.InvariantCultureIgnoreCase
, затемa == b using StringComparer.OrdinalIgnoreCase
a != b using StringComparer.InvariantCultureIgnoreCase
, затемa != b using StringComparer.OrdinalIgnoreCase
До сих пор я знаю, что оператор номер 3 не соответствует действительности из-за пример a = STRASSE
и b = Straße
из комментария в this вопрос.
В идеале я хотел бы получить объяснение, почему утверждение истинно или пример, когда это неверно.
Я не верю ни одному из этих утверждений для всех входов. Однако результат отношений '==' и '! =' Для любой конкретной строки гарантированно стабилен, потому что порядковый номер, с одной стороны, представляет собой просто сравнение массива значений ushort (за исключением случая невежества) и инварианта культура с другой гарантируется, что она не изменится в разных культурах и версиях .NET. –