Проблема сравнения строк - PullRequest
0 голосов
/ 01 февраля 2011

У меня есть две строки, которые я хочу сравнить.

A - это пользовательский элемент управления Silverlight со свойством Header.

B равняется System.String.

Когда я сравниваю так:

if(A.Header == B)

Я понимаю, что они не совпадают.

Если я проверяю значения в VS2010 с помощью функции быстрого просмотра, они совпадают.Если я запускаю GetType на обоих объектах, я обнаруживаю, что они оба System.String.

Я знаю, что могу просто сравнить их с String.Compare.

Я думаю, что это делает == в строках всегда будет сравнивать значения.Есть ли что-то немного странное с этим элементом управления Silverlight, который я использую?Кто-нибудь может объяснить, что мне здесь не хватает?

Спасибо.

Ответы [ 5 ]

1 голос
/ 01 февраля 2011

Я нашел ответ, который выглядит так, как будто равенства были переопределены в используемом мной элементе управления Silverlight.

спасибо Джону в этой теме за ответ

Являются ли операторы string.Equals () и == действительно одинаковыми?

0 голосов
/ 01 февраля 2011

Может быть начальным или конечным пробелом, разница в регистре, возможно, он содержит символы, которые выглядят одинаково, но имеют другой код символа.

Попробуйте следующее:

if (string.Compare(A.Header.Trim(), B.Trim(), StringComparison.OrdinalIgnoreCase) == 0)
{
  ..
}
0 голосов
/ 01 февраля 2011

Попробуйте:

char[] arrayA = A.Header.ToCharArray();
char[] arrayB = B.ToCharArray();

и проверьте их с помощью VS.Должно быть ясно, где они различаются.

0 голосов
/ 01 февраля 2011

Они могут иметь пробел или что-то похожее, но с разными фактическими кодами символов. Как и кириллица е может выглядеть как латиница e, но это не одно и то же. Попробуйте перебрать символы и посмотреть, все ли они одинаковые.

0 голосов
/ 01 февраля 2011

Они имеют одинаковую длину? Может быть, есть пробел или ведущий пробел.

...