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 გადაწერილია.