Kezdőoldal » Számítástechnika » Programozás » Valaki huzamosabb ideig a...

Valaki huzamosabb ideig a C#-os kérdéseimre válaszolgatni?

Figyelt kérdés

Suliban nem rég kezdtük el, mindjárt őszi szünet, és én ez idő alatt szeretném megtoldani a menüs programunkat...több programmal.

Módosítgatni itt-ott rajta, beleírni, stb.


Van már pár konkrét kérdésem is, de megfogalmazni értelmesen pár sorban nem igazán tudom.



2015. okt. 21. 16:01
1 2 3
 11/21 anonim ***** válasza:

Nem tudok egyetérteni. Egyrészt nem baj ha hozzászokik az Equals-hoz hogy ne essen bele abba a hibába amibe a sok kezdő programozó beleesik akik nem tudják a különbséget a kettő között vagy áttérnek egy másik nyelvre ahol a == máshogy működik.


Másrészt pedig van különbség. A == referenciákat hasonlít itt is mint a Java-ban, csak itt ugyan azt a szöveget nem tárolja kétszer a C#. De ha valami művelet folytán a szöveg referenciája megváltozik, akkor a == hamisat fog visszaadni, míg az Equals nem. Ez később bugok forrása is lehet és sok fejfájástól és debuggálástól megóvhat ha azt használjunk ami erre ki lett találva. Nem véletlenül van ott az Equals. Persze kezdő szinten nem valószínű hogy belefog futni egy ilyen hibába de így legalább elkerüli a rossz szokásokat és később se fog.


Egyszerű példa rá:

string s1 = "szoveg";

object s2 = "szoveg2".Substring(0,6);


Console.WriteLine("{0} == {1} ? {2}", s1, s2, s1==s2);

Console.WriteLine("{0}.Equals({1}) ? {2}", s1, s2, s1.Equals(s2));


A kimenet:

szoveg == szoveg ? False

szoveg.Equals(szoveg) ? True


[link]

2015. okt. 21. 19:49
Hasznos számodra ez a válasz?
 12/21 anonim ***** válasza:

Baromság.

Object-et persze, hogy nem hasonlíthatsz össze ==-vel stringgel.

Ha hülyeséget csinálsz persze, hogy rossz lesz a végeredmény.

2015. okt. 21. 20:02
Hasznos számodra ez a válasz?
 13/21 anonim ***** válasza:
Igen, mivel ez egy egyszerű példa volt, nyilván ilyen formában "baromság", de vannak esetek amikor nem az. A lényeg viszont nem jutott el hozzád, ami az, hogy az Equals érték-összehasonlításra való, a == pedig referencia-összehasonlításra. Amúgy se sokkal hosszabb kiírni, akkor meg mi a problémád?
2015. okt. 21. 20:25
Hasznos számodra ez a válasz?
 14/21 anonim ***** válasza:

String-eknél a == túl van terhelve (nem gagyi Java) és ugyanúgy érték összehasonlítást végez.

Az a lényege, hogy sokkal olvashatóbb, mint az Equals, ezért szeretjük a .Net-et, mert okos, szép, modern, olvasható.

2015. okt. 21. 20:44
Hasznos számodra ez a válasz?
 15/21 anonim ***** válasza:
A == átláthatóbb, az Equals biztosabb, mindkettőt lehet megfelelően használni, egyéni preferencia ki melyiket kedveli.
2015. okt. 21. 21:00
Hasznos számodra ez a válasz?
 16/21 A kérdező kommentje:

JESUS...hát itt tényleg háború van :D

Tudjátok, én inkább maradok a bonyolultabb, de biztosabb megoldásnál. Vettünk már == -t, de szerintem sem árt ha tudok még extra dolgokat.

Fogalmam sincs kivel értsek egyet, ezért csak annyit mondok hogy jobb minden lehetőséget tudni, mint egyet sem.

2015. okt. 21. 21:20
 17/21 anonim ***** válasza:
Ha stringet hasonlítasz stringel akkor semmi bajod nem származik az == használatából.
2015. okt. 21. 21:41
Hasznos számodra ez a válasz?
 18/21 A kérdező kommentje:
Ott van az a "ha". De mivan ha nem ? :D
2015. okt. 21. 22:17
 19/21 anonim ***** válasza:
Stringek között működik a == operátor érték szerinti összehasonlításnál, de általánosságban ez nem igaz, csak pár ilyen speciális eset van. A legtöbb beépített típusnak van valamilyen *Equals metódusa amit lehet használni, ha pedig nincs, akkor neked kell írnod egyet. Az hogy mire működik a == és mire nem, kezdőként nem kell fejben tartanod, hozzá fogsz szokni ha majd több kódot látsz. A "gagyi" Java ilyen szempontból legalább konzisztens.
2015. okt. 21. 23:06
Hasznos számodra ez a válasz?
 20/21 anonim ***** válasza:

A java nem konzisztens, hanem gagyi, hiszen még operátor túlterhelés sincs.

70-es évek kb...

2015. okt. 22. 08:20
Hasznos számodra ez a válasz?
1 2 3

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!