someString.IndexOf (someString )возвращает 1 вместо 0 в.NET 4

Недавно мы обновили все наши проекты с.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, если вы вставите ее в правильный редактор.

Обновление:

Изменена исходная строка проблемы на такую, в которой каждый фактический символ четко виден (с помощью экранирования ). Это немного упрощает вопрос.

56
задан stakx supports GoFundMonica 13 July 2012 в 11:20
поделиться