Sobes.tech
Junior — Middle

В кои случаи се извършва сравнение на референтните типове данни?

sobes.tech AI

Отговор от AI

В C# сравняването на референтни типове се извършва в следните случаи:

  • Сравнение на референции (ReferenceEquals) — проверява дали две променливи сочат към един и същи обект в паметта.

  • Презаписване на Equals() — за сравняване на съдържанието на обектите, а не на техните адреси.

  • Оператори == и != — по подразбиране за референтните типове сравняват референциите, но могат да бъдат пренаписани за сравнение на съдържанието.

Пример:

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

Така, сравняването на референтни типове се извършва или за проверка дали променливите сочат към един и същи обект, или за сравняване на съдържанието на обектите, ако методът Equals е пренаписан.