Junior — Middle
Өз классыңызды сөздүк түрүндөгү коллекцияда ачкыч катары колдонуу үчүн кандай кадамдар керек?
sobes.tech AI
AIден жооп
C# тилинде Dictionary<TKey, TValue> ичинде өз классыңарды ачкыч катары колдонуу үчүн, ачкычтардын туура салыштырылышын жана алардын хэш-коддорунун эсептелишин камсыз кылыш керек. Бул үчүн:
Equals(object obj)методун кайра жазып, ал классыңыздын объекттерин маанилүү талаалар боюнча туура салыштырып турушу керек.GetHashCode()методун кайра жазып, бирдей деп эсептелген объекттердин бирдей хэш-коду болушу керек.
Мисал:
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override bool Equals(object obj)
{
if (obj is Person other)
{
return Name == other.Name && Age == other.Age;
}
return false;
}
public override int GetHashCode()
{
return HashCode.Combine(Name, Age);
}
}
Альтернативдүү, IEqualityComparer<T> интерфейсин ишке ашырып, аны сөздүктүн куруучусуна өткөрсөңүз болот, эгер классты өзгөртүүнү каалабасаныз.