Строковый оператор равенства C# возвращает false, но я вполне уверен, это должен быть истинный … Что?

Я пытаюсь записать модульный тест на часть кода, который генерирует большую сумму текста. Я столкнулся с проблемой, где "ожидаемые" и "фактические" строки, кажется, равны, но Утверждают. Броски AreEqual, и и оператор равенства и Equals() возвратите false. Результат GetHashCode() отличается для обоих значений также.

Однако помещение обеих строк в текстовые файлы и сравнение с DiffMerge говорят мне, что они - то же.

Кроме того, использование Encoding.ASCII.GetBytes() на обоих значениях и затем использовании SequenceEquals сравнить получающиеся массивы байтов возвращает true.

Значения составляют 34 КБ каждый, таким образом, я удержу помещать их здесь на данный момент. Какие-либо идеи? Я полностью озадачен.

5
задан Daniel Schaffer 1 April 2010 в 03:49
поделиться

2 ответа

Какие типы кодировки файлов вы передаете в DiffMerge? Если у вас есть символы, которые не соответствуют типу кодировки, то есть вероятность, что они не будут отображаться в DiffMerge.

Создаваемая строка и ожидаемый результат, вероятно, имеют разные кодировки символов. Когда вы делаете ASCII. GetBytes, вы конвертируете все в ASCII. Таким образом, ваши строки преобразуются в ASCII и равны с точки зрения набора символов ASCII. Тем не менее, они все еще могут быть неравными в других наборах символов (и все равно «выглядеть» так же для вас).

Кроме того, попробуйте выполнить string.Compare(str1, str2, StringComparison.XXXX) и сообщите нам, что произойдет.

5
ответ дан 18 December 2019 в 11:55
поделиться

Прокрутите char по char и найдите, что, по его мнению, отличается? Тот факт, что запись его на диск и сравнение ASCII / текста говорит мне, что это, вероятно, связано либо с возвратом каретки / переводом строки (что каким-то образом нормализуется во время сохранения), либо с каким-то символом, отличным от ASCII (возможно, с высоким unicode пробел), который будет удален при сохранении как ASCII.

10
ответ дан 18 December 2019 в 11:55
поделиться
Другие вопросы по тегам:

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