Middle
რა განსხვავებაა C#-ში მეთოდს Equals და ოპერატორს == შორის?
sobes.tech AI
პასუხი AI-სგან
Տարբերությունը կապված է այն բանի հետ, թե ինչպես են նրանք համեմատում օբյեկտները:
| Մեթոդ/Օպերատոր | Նկարագրություն | Հղմանային տիպերի համար համեմատություն | Արժեքային տիպերի համար համեմատություն | Օգտագործում |
|---|---|---|---|---|
Equals() |
object դասի վիրտուալ մեթոդ, որը կարող է վերանվանվել: |
Դեպքում, երբ չի վերանվանվել, համեմատում է հղումները: | Համեմատում է դաշտերի արժեքները: | Միջնորդական |
== |
Վերբեռնվող օպերատոր: | Դեպքում, երբ չի վերանվանվել, համեմատում է հղումները: | Դեպքում, երբ չի վերանվանվել, համեմատում է արժեքները: | Միջնորդական |
Օրինակներ:
// Հղմանային տիպերի համեմատություն
string s1 = new string("hello");
string s2 = new string("hello");
string s3 = s1;
Console.WriteLine(s1.Equals(s2)); // Ճշմարիտ (եթե `Equals` վերանվանված է)
Console.WriteLine(s1 == s2); // Արտառոց (հղումները համեմատվում են)
Console.WriteLine(s1 == s3); // Ճշմարիտ (հավասար հղումները համեմատվում են)
// Արժեքային տիպերի համեմատություն
int a = 10;
int b = 10;
int c = 20;
Console.WriteLine(a.Equals(b)); // Ճշմարիտ (արժեքները համեմատվում են)
Console.WriteLine(a == b); // Ճշմարիտ (արժեքները համեմատվում են)
Console.WriteLine(a == c); // Արտառոց (տարբեր արժեքներ)
Маանիլүү նշում: == օպերատորը կարող է վերանվանվել օգտագործողի համար, որպեսզի փոխվի նրա նախնական վարքագիծը: Equals() մեթոդը նույնպես կարող է վերանվանվել օգտագործողի կողմից, որպեսզի իրականացնել օգտագործողի տրամաբանությունը։ Հաճախ խորհուրդ է տրվում օգտագործել Equals() հղմանային տիպերի արժեքների համեմատության համար, իսկ արժեքային տիպերի համար՝ Equals() կամ ==, կախված կոնտեքստից և պահանջներից։