Junior — Middle
Ինչպե՞ս կարելի է խուսափել չափի սահմանափակումից կամ սահմանափակումից բառարանի մեջ բանալի օգտագործելիս։
sobes.tech AI
Պատասխան AI-ից
C# լեզվում, բառարանները (Dictionary<TKey, TValue>) ունեն սահմանափակումներ բանալի տեսակների և դրանց չափի վրա, օրինակ, բանալին պետք է լինի հեշավորվող և ճիշտ իրականացնի GetHashCode և Equals մեթոդները:
Որպեսզի խուսափեք չափի կամ տեսակային սահմանափակումներից, կարող եք:
- Օգտագործել համակցված բանալիներ, օրինակ, ստեղծել դաս կամ կառուցվածք, որը միավորում է մի քանի արժեք և դրա համար ճիշտ իրականացնում
GetHashCodeևEqualsմեթոդները: - Մեծ կամ բարդ բանալիները փոխարկել ավելի կոմպակտ ներկայացումների, օրինակ, օբյեկտը սերիալիզացնել տողում կամ օգտագործել հեշ-ֆունկցիա:
- Օգտագործել մասնագիտացված հավաքածուներ կամ տվյալների կառուցվածքներ, եթե ստանդարտ բառարանը չի համապատասխանում:
Համակցված բանալիի օրինակ:
struct CompositeKey
{
public int Id;
public string Name;
public override bool Equals(object obj) => obj is CompositeKey other && Id == other.Id && Name == other.Name;
public override int GetHashCode() => HashCode.Combine(Id, Name);
}
var dict = new Dictionary<CompositeKey, string>();
dict[new CompositeKey { Id = 1, Name = "Test" }] = "Value";