Это то же самое, что и кодовая точка для сравнения кодовых точек, то есть та, которая не обращает внимания на свертывание, культурные упорядочения, композицию или что-либо, кроме значения Unicode.
Это довольно бесполезно, если рассматривать строки как текст, понятный человеку, но иногда вам просто нужно иметь возможность упорядочивать строки в порядке, поскольку некоторые алгоритмы (бинарный поиск, как вы говорите) нуждаютсяпоследовательное упорядочение, но детали этого непротиворечивого упорядочения не имеют существенного значения.
Важно отметить, что порядковое сравнение строк, предлагаемых .NET, работает на внутреннем UTF-16, который не поддерживает порядок кодов.Если мы сравним строку только с символом U + FF61 и строку только с символом U + 10002, тогда .NET сохранит последние в виде суррогатных пар 0xD800 и 0XDC02.
Следовательно:
string.CompareOrdinal("\U0000ff61", "\U00010002");
и
string.Compare("\U0000ff61", "\U00010002", StringComparison.Ordinal);
оба возвращают значения, большие нуля, даже несмотря на то, что первое меньше в значении кода, чем второе (я использовал форму \ U, а не форму \ uчтобы сделать это более понятным).
Если под "фактическими строками Unicode" вы подразумеваете строки .NET UTF-16, то ответ на ваш вопрос - нет, по причине, противоположной той, которая привела вас к размышлениюэто может сработать.