Недавно мы обновили все наши проекты с.NET 3.5 до.NET 4. Я столкнулся с довольно странной проблемой в отношении string.IndexOf()
.
Мой код, очевидно, делает что-то немного другое, но в процессе исследования проблемы я обнаружил, что вызов IndexOf()
для строки с самим собой возвращает 1 вместо 0. Другими словами:
string text = "\xAD\x2D"; // problem happens with "-dely N.China", too;
int index = text.IndexOf(text); // see update note below.
Дал мне индекс 1 вместо 0. Несколько замечаний по поводу этой проблемы:
Проблемы, кажется, связаны с этими дефисами (первый символ — это мягкий дефис Unicode, второй — обычный дефис ).
Я дважды проверил, этого не происходит в.NET 3.5, но происходит в.NET 4.
Изменение IndexOf()
для порядкового сравнения устраняет проблему, поэтому по какой-то причине этот первый символ игнорируется по умолчанию IndexOf
.
кто-нибудь знает, почему это произошло?
РЕДАКТИРОВАТЬ
Извините ребята,немного подправил исходный пост и дважды добавил туда скрытый тире. Я обновил строку, она должна возвращать индекс 1 вместо 2, если вы вставите ее в правильный редактор.
Обновление:
Изменена исходная строка проблемы на такую, в которой каждый фактический символ четко виден (с помощью экранирования ). Это немного упрощает вопрос.