Middle
C# tilida Equals metodi va == operatori o'rtasidagi farq nima?
sobes.tech AI
AIdan javob
Farqi ular objectlarni taqqoslash usulidan kelib chiqadi:
| Usul/Operator | Tavsifi | Referens tiplari uchun taqqoslash | Qiymat tiplari uchun taqqoslash | Yuki qo'shish |
|---|---|---|---|---|
Equals() |
object sinfining virtual usuli, qayta yozilishi mumkin. |
Odatda, referenslarni taqqoslaydi (agar qayta yozilmagan bo'lsa). | Maydon qiymatlarini taqqoslaydi (qayta yozilgan yoki ichki tiplarda). | Mümkin |
== |
Yuki qo'shish mumkin bo'lgan operator. | Odatda, referenslarni taqqoslaydi (referens tiplari uchun). | Odatda, qiymatlarni taqqoslaydi (qiymat tiplari uchun). | Mümkin |
Misollar:
// Referens tiplari taqqoslanishi
string s1 = new string("hello");
string s2 = new string("hello");
string s3 = s1;
Console.WriteLine(s1.Equals(s2)); // True (agar stringda Equals qayta yozilgan bo'lsa)
Console.WriteLine(s1 == s2); // False (referenslar taqqoslanadi)
Console.WriteLine(s1 == s3); // True (bir xil referenslar)
// Qiymat tiplari taqqoslanishi
int a = 10;
int b = 10;
int c = 20;
Console.WriteLine(a.Equals(b)); // True (qiymatlar taqqoslanadi)
Console.WriteLine(a == b); // True (qiymatlar taqqoslanadi)
Console.WriteLine(a == c); // False (farqli qiymatlar)
== operatori maxsus tiplarga yuki qo'shish mumkinligini va uning standart xulqini o'zgartirish mumkinligini unutmang. Equals() metodi ham, ob'ektlarni taqqoslash uchun maxsus mantiqni amalga oshirish uchun qayta yozilishi mumkin. Ko'pgina hollarda, referens tiplari uchun Equals() ishlatish tavsiya etiladi, va qiymat tiplari uchun Equals() yoki == ishlatilishi mumkin, kontekst va ishlash talablariga qarab.