Sobes.tech
Junior — Middle

Aký je rozdiel medzi operátorom rovnosti '==' a metódou 'Equals()' v programovacom jazyku?

sobes.tech AI

Odpoveď od AI

Operátor == a metóda Equals() v C# sa používajú na porovnanie, ale fungujú odlišne:

  • == — je operátor, ktorý môže byť prepísaný v triedach. Pre primitívne typy (int, bool atď.) porovnáva hodnoty. Pre referenčné typy predvolene porovnáva referencie (t.j. či premenné ukazujú na ten istý objekt), ak nie je prepísaný.

  • Equals() — je metóda definovaná v základnej triede Object. Môže byť prepísaná na porovnanie obsahu objektov namiesto referencií. Predvolene pre referenčné typy sa správa ako == (porovnáva referencie), ale mnoho tried (napríklad string) ju prepíše na porovnanie hodnôt.

Príklad:

string a = "test";
string b = new string(new char[] {'t','e','s','t'});

bool opEqual = (a == b);       // true, pretože operátor `==` pre string porovnáva obsah
bool methodEqual = a.Equals(b); // true, metóda `Equals` tiež porovnáva obsah

object o1 = new object();
object o2 = new object();

bool opEqualObj = (o1 == o2);       // false, rôzne referencie
bool methodEqualObj = o1.Equals(o2); // false, metóda `Equals` nie je prepísaná

Takže, == môže byť operátor porovnania referencií alebo hodnôt v závislosti od typu a preťaženia, a Equals() je metóda, ktorú zvyčajne prepíšu na porovnanie obsahu objektov.