C# - két string összehasonlítása?
Eléggé kezdő vagyok ezen a téren. Milyen módon lehetne összehasonlítani két stringet C#-ban?
Be szeretnék kérni egy szót a felhasználótól. Ha ez a szó megegyezik egy általam meghatározott szóval, akkor záródjon be a program. Ha nem egyezik meg, akkor induljon előről. (Ciklusokkal meg tudom oldani a második részt, csak magára az összehasonlításra vagyok kíváncsi. Kis és nagybetűk is számítanak.)
A segítséget előre is köszönöm! :)
string str1 = "valami";
string str2 = "még valami";
if (str1 == str2)
Console.WriteLine(true);
else
Console.WriteLine(false);
Igazából is-is. Az == alapvetően referenciák alapján hasonlít össze, így két különböző objektumra, amik tartalmilag megegyeznek, a == false-t fog dobni, míg az Equals true-t. However, stringek esetébena == operátor felül van definiálva, és stringek összehasonlításakor a == is érték szerint hasonlít össze. Viszont arra oda kell figyelni, hogy ez csak akkor van így, ha a == operátor mindkét oldalán string referencia van. Ha pl:
string str1 = "foo";
string str2 = "foo";
object str3 = str2;
Ezesetben str1 == str2 true, str3==str2 is true, ellenben str3 == str1 false lesz. Ennek oka egyszerű: str3 nem string referenciát tartalmaz, hanem mezei objektumreferenciát, és a string által felüldefiniált == operátor itt nem érvényes. Emiatt a str1 == str3 esetben referencia szerinti az összehasonlítás, viszont a két string referenciája nem egyezik. Így false lesz.
Lényega lényeg, hacsak nem dolgozol mezei object típussal, tökmindegy melyiket használod.
A #3-as válaszolónak majdnem igaza van, de fogadni mernék, hogy nem próbálta ki a kódot amit irt, bár én sem, de biztosra veszem, hogy str1 == str3 is true lesz a fenti esetben, mert ezek forditási időben létező stringek, ugyanaz a példány lesz.
Persze ha:
string str2 = "foobar".Substring(0,3);
lenne irva, ami ugye szintén "foo", akkor úgy lenne ahogy irja.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!