2016-03-28 2 views
0

в то время как я учился (чтение Essential C#-5th Edition) метод String.Compare() я прочитал, что если я позволяю сказать, что 1 строка text1 и 1 строка text2 при сравнении, что я получаю номер:string.Compare() 2 струнных

// 0 if equal 
// negative if text1 < text2 
// positive if text1 > text2 

так, когда я это сделать

string text1 = "Hello"; 
string text2 = "Hello"; 

int result = string.Compare(text1, text2); 

Console.Write(result); // I get 0 which means equal which is correct. 

Но если я:

string text1 = "Helo"; 
string text2 = "Hello"; 

int result = string.Compare(text1, text2); 

Console.Write(result); // I get 1. Shouldn't i be getting -1? Doing the opposite meaning that i have text1 = "Hello" and text 2 = "Helo" produces -1 when it should produce 1 correct? 

Почему это происходит или мне не хватает (возиться) с чем-то?

+0

Связанные http://stackoverflow.com/questions/9354966/string-sorting-issue-in-c-sharp – LibertyLocked

+1

Вы видели словарь (как книга)? «Helo»> «Hello» ... –

ответ

2

Он сравнивает каждый символ в следующем порядке: H = H, E = E, L = L, O> L, а затем он останавливается. Так Helo>Hello просто потому, что l до o в алфавите.

Более подробную информацию можно найти на MSDN

+0

О, я подумал, что это сравнение, чтобы увидеть, есть ли равные символы в обоих строковых значениях, например, 5 символов в 1 строке и 5 в другой. – Johnson

+0

Или я принимаю его с помощью метода String.Equals()? – Johnson

+0

Нет. Он сравнивает код ASCII для каждого символа в строке. Если вам нужно сравнить длину строки, вы можете использовать что-то вроде этого: 'text1.Length> text2.Length' –

Смежные вопросы