Valaki huzamosabb ideig a C#-os kérdéseimre válaszolgatni?
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.
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
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.
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ó.
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.
A java nem konzisztens, hanem gagyi, hiszen még operátor túlterhelés sincs.
70-es évek kb...
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!