Diskuze: porovnání string
Zobrazeno 5 zpráv z 5.
String v C# má preťažený operátor. Preto sa porovnáva obsah a nie referencia. Funguje to iba pri Stringu.
V C# existuje více možností, ale musíš být opatrný, protože se občas stane nečekaná věc:
private static void m1()
{
string a = "ahoj";
string b = "aho" + 'j';
bool test1 = (a == b); // true, pretizeny operator vola string.Equals()
bool test2 = a.Equals(b); // true
}
private static void m2()
{
object a = "ahoj";
object b = "ahoj";
bool test1 = (a == b); // true, je to test na instanci, ale protoze "ahoj" je identicka konstanta, projde
bool test2 = a.Equals(b); // true
}
private static void m3()
{
object a = "ahoj";
object b = "aho" + 'j';
bool test1 = (a == b); // false, b neni konstanta a kontroluji se instance
bool test2 = a.Equals(b); // true, string.Equals() je overriden
}
private static void m4()
{
string a = "ahoj";
object b = "aho" + 'j';
bool test1 = (a == b); // false
bool test2 = a.Equals(b); // true
}
private static void m5()
{
string a = "AHOJ";
string b = "ahoj";
bool test1 = string.Equals(a, b, StringComparison.CurrentCultureIgnoreCase); // true
}
Dále se jednotlivé varianty liší testováním na null. Statické metody včetně operátorů umí zkontrolovat null korektně. Poslední varianta pak umožňuje kontrolovat stringy v různých kulturách.
Zobrazeno 5 zpráv z 5.