Kezdőoldal » Számítástechnika » Programozás » C# - két string összehasonlítása?

C# - két string összehasonlítása?

Figyelt kérdés

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! :)



2016. júl. 21. 20:41
 1/8 anonim ***** válasza:
egyik.Equals(masik)
2016. júl. 21. 20:53
Hasznos számodra ez a válasz?
 2/8 anonim ***** válasza:

string str1 = "valami";

string str2 = "még valami";


if (str1 == str2)

Console.WriteLine(true);

else

Console.WriteLine(false);

2016. júl. 21. 21:05
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:
100%

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.

2016. júl. 22. 03:40
Hasznos számodra ez a válasz?
 4/8 A kérdező kommentje:
Értem, köszönöm a segítséget! :)
2016. júl. 22. 12:35
 5/8 anonim ***** válasza:
100%

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.

2016. júl. 22. 23:00
Hasznos számodra ez a válasz?
 6/8 anonim ***** válasza:
Igaz, ezt elnéztem picit :)
2016. júl. 22. 23:48
Hasznos számodra ez a válasz?
 7/8 anonim ***** válasza:
5 válaszoló minden esetben true lesz mert nem referencia lesz összehasonlítva. Próbáld csak ki nyugodtan.
2016. júl. 23. 20:25
Hasznos számodra ez a válasz?
 8/8 anonim ***** válasza:
Bocsi benéztem.
2016. júl. 23. 20:28
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!