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 методу кайра жазылган болсо, объекттердин мазмунун салыштыруу үчүн жүргүзүлөт.