Sobes.tech
Junior — Middle

Fərqli məlumat strukturlarının müqayisəsi necə həyata keçirilir?

sobes.tech Süni İntellekt

AI-dan cavab

C# dilində məlumatların strukturlarının müqayisəsi məlumat növündən və müqayisənin necə həyata keçirildiyindən asılıdır:

  • Əsas tiplər (int, double, bool və s.) dəyərə görə müqayisə olunur.
  • Strukturlar (struct) standart olaraq dəyərə görə müqayisə edilir — bütün sahələr ardıcıl olaraq müqayisə olunur.
  • Siniflər (class) referansa görə müqayisə edilir, yəni dəyişənlərin eyni obyektə işarə edib etmədiyi yoxlanılır.
  • Siniflərin məzmununu müqayisə etmək üçün adətən Equals()GetHashCode() metodları yenidən yazılır və ya IEquatable<T> interfeysi tətbiq edilir.
  • Kolleksiyalar üçün System.Linq metodlarından, məsələn, SequenceEqual, istifadə etmək olar.

İki struktur və sinfi müqayisə nümunəsi:

struct PointStruct
{
    public int X, Y;
}

class PointClass
{
    public int X, Y;
    public override bool Equals(object obj)
    {
        if (obj is PointClass other)
            return X == other.X && Y == other.Y;
        return false;
    }
    public override int GetHashCode() => (X, Y).GetHashCode();
}

var a = new PointStruct { X = 1, Y = 2 };
var b = new PointStruct { X = 1, Y = 2 };
Console.WriteLine(a.Equals(b)); // Doğru - dəyərə görə müqayisə

var c = new PointClass { X = 1, Y = 2 };
var d = new PointClass { X = 1, Y = 2 };
Console.WriteLine(c.Equals(d)); // Doğru - yenidən yazma sayəsində
Console.WriteLine(ReferenceEquals(c, d)); // Yalnış - fərqli obyektlər