Sobes.tech
Junior — Middle

Qaysi hollarda referens ma'lumot turlarini taqqoslash amalga oshiriladi?

sobes.tech AI

AIdan javob

C# da referens turlarining taqqoslanishi quyidagi hollarda amalga oshiriladi:

  • ReferenceEquals bilan taqqoslash — ikki o'zgaruvchining bir xil xotira ob'ektiga ishora qilayotganligini tekshiradi.

  • Equals() metodini qayta yozish — ob'ektlarning mazmunini, ularning manzillarini emas, taqqoslash uchun.

  • == va != operatorlari — odatda, referens turlari uchun, ular referenslarni taqqoslaydi, lekin mazmuni uchun qayta yozilishi mumkin.

Misol:

class Person {
    public string Name;
    public override bool Equals(object obj) {
        if (obj is Person other) {
            return this.Name == other.Name;
        }
        return false;
    }
    public override int GetHashCode() => Name.GetHashCode();
}

var p1 = new Person { Name = "Alice" };
var p2 = new Person { Name = "Alice" };

bool areSameReference = Object.ReferenceEquals(p1, p2); // false
bool areEqual = p1.Equals(p2); // true

Shunday qilib, referens turlarining taqqoslanishi yoki ular bir xil ob'ektga ishora qilayotganligini tekshirish uchun, yoki agar Equals metodini qayta yozilgan bo'lsa, ob'ektlarning mazmunini taqqoslash uchun amalga oshiriladi.