Sobes.tech
Junior — Middle

Kādās gadījumos tiek veikta atsauces datu tipu salīdzināšana?

sobes.tech AI

Atbilde no AI

C# valodā atsauces tipu salīdzināšana notiek šādos gadījumos:

  • ReferenceEquals salīdzināšana — pārbauda, vai divas mainīgās norāda uz to pašu objektu atmiņā.

  • Equals() metodes pārrakstīšana — lai salīdzinātu objektu saturu, ne to adreses.

  • == un != operatori — pēc noklusējuma, atsauces tipus salīdzina atsauces, bet tie var tikt pārrakstīti, lai salīdzinātu saturu.

Piemērs:

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

Tādējādi, atsauces tipu salīdzināšana tiek veikta vai nu, lai pārbaudītu, vai mainīgie norāda uz to pašu objektu, vai arī, lai salīdzinātu objektu saturu, ja metode Equals ir pārrakstīta.