Potrzebuję przekonwertować niektóre porównania ciągów z vb na C#. Kod vb używa operatorów> i <. Zamierzam zastąpić to standardowymi metodami porównywania ciągów ramowych. Ale jest zachowanie, którego nie rozumiem. Aby to replikować, mam ten testZrozumienie zachowania porównywania ciągów
[TestMethod]
public void TestMethod2()
{
string originalCulture = CultureInfo.CurrentCulture.Name; // en-GB
var a = "d".CompareTo("t"); // returns -1
var b = "T".CompareTo("t"); // returns 1
Assert.IsTrue(a < 0, "Case 1");
Assert.IsTrue(b <= 0, "Case 2");
}
Może ktoś wyjaśnić, dlaczego b wraca 1. Mój obecny jest zrozumienie, że jeśli to jest wielkość liter, a następnie „T” powinna poprzedzać „t” w porządku sortowania tj -1 . Jeśli jest to sprawa niewrażliwe byłoby to samo czyli 0
(FYI .Net Framework 4.5.2)
Wiele thx
Czy możesz również pokazać kod VB? –
Dlaczego konkretnie spodziewasz się, że wielkie litery będą poprzedzać małe litery? (Dzieje się tak, jeśli użyjesz * * porządkowego * porównania, co prawda.) –
Czy kod vb zwróci inny niż "1" w "" T ".CompareTo (" t ")'? – Fabio