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 е пренаписан.