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()vəGetHashCode()metodları yenidən yazılır və yaIEquatable<T>interfeysi tətbiq edilir. - Kolleksiyalar üçün
System.Linqmetodları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