Junior — Middle
Hoe wordt de vergelijking van verschillende datastructuren uitgevoerd?
sobes.tech AI
Antwoord van AI
In C# hangt de vergelijking van gegevensstructuren af van het gegevenstype en hoe de vergelijking is geïmplementeerd:
- Primitieve types (int, double, bool, enz.) worden op waarde vergeleken.
- Structuren (struct) worden standaard op waarde vergeleken — alle velden worden sequentieel vergeleken.
- Klassen (class) worden op referentie vergeleken, dat wil zeggen, wordt gecontroleerd of de variabelen naar hetzelfde object wijzen.
- Om de inhoud van klassen te vergelijken, worden meestal de methoden
Equals()enGetHashCode()overschreven of wordt de interfaceIEquatable<T>geïmplementeerd. - Voor collecties kunnen methoden uit
System.Linq, zoalsSequenceEqual, worden gebruikt.
Voorbeeld van het vergelijken van twee structuren en klassen:
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)); // Waar - vergelijking op waarde
var c = new PointClass { X = 1, Y = 2 };
var d = new PointClass { X = 1, Y = 2 };
Console.WriteLine(c.Equals(d)); // Waar - dankzij overschrijving
Console.WriteLine(ReferenceEquals(c, d)); // Onwaar - verschillende objecten