Middle
C# dilində Equals metodu ilə == operatoru arasındakı fərq nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Fərq, obyektləri necə müqayisə etdiklərinə görə fərqlənir:
| Metod/Operator | Təsviri | Referens tiplər üçün müqayisə | Dəyər tiplər üçün müqayisə | Yüklenmə |
|---|---|---|---|---|
Equals() |
object sinfinin virtual metodu, üzərinə yazıla bilər. |
Varsayılan olaraq referansları müqayisə edir (əgər üzərinə yazılmayıbsa). | Sahə dəyərlərini müqayisə edir (üzərinə yazıldıqda və ya daxili tiplər üçün). | Mümkündür |
== |
Yüklənə bilən operator. | Varsayılan olaraq referansları müqayisə edir (referens tiplər üçün). | Varsayılan olaraq dəyərləri müqayisə edir (dəyər tiplər üçün). | Mümkündür |
Nümunələr:
// Referens tiplərinin müqayisəsi
string s1 = new string("hello");
string s2 = new string("hello");
string s3 = s1;
Console.WriteLine(s1.Equals(s2)); // True (əgər stringdə Equals üzərinə yazılıbsa)
Console.WriteLine(s1 == s2); // False (referanslar müqayisə olunur)
Console.WriteLine(s1 == s3); // True (eyni referanslar)
// Dəyər tiplərinin müqayisəsi
int a = 10;
int b = 10;
int c = 20;
Console.WriteLine(a.Equals(b)); // True (dəyərlər müqayisə olunur)
Console.WriteLine(a == b); // True (dəyərlər müqayisə olunur)
Console.WriteLine(a == c); // False (fərqli dəyərlər)
== operatorunun xüsusi tiplər üçün yüklənə biləcəyini və onun standart davranışını dəyişə biləcəyini unutmayın. Equals() metodu da, obyektlərin müqayisəsi üçün xüsusi məntiqi həyata keçirmək üçün yenidən yazıla bilər. Əksər hallarda, referens tiplər üçün Equals() istifadə etmək tövsiyə olunur, və dəyər tipləri üçün isə Equals() və ya == istifadə edilə bilər, kontekstdən və performans tələblərindən asılı olaraq.