Junior
C#'та сөздүктө ачкыч боюнча маанини кантип алуу керек?
sobes.tech AI
AIден жооп
Ключ менен индексаторду же TryGetValue ыкмасын колдонсо болот.
-
Индексатор (
[key]):- белгилүү бир ачкыч боюнча маанини кайтарат.
- ачкыч жок болсо
KeyNotFoundExceptionчыгарат.
// Индексаторду колдонуу мисалы Dictionary<string, int> жаштар = new Dictionary<string, int>(); жаштар["Alice"] = 30; int Alice_жашы = жаштар["Alice"]; // маанини алабыз // жаштар["Bob"]; // Эгер "Bob" ачкычы жок болсо, KeyNotFoundException чыгат -
TryGetValue(key, out value)ыкмасы:- белгилүү бир ачкыч боюнча маанини табууга аракет кылат.
- Эгер ачкыч табылса,
trueкайтарат жанаvalueөзгөрмөсүнө маанини жүктөйт. - Эгер ачкыч табылбаса,
falseкайтарат жанаvalueмааниси типтин по умолчанию болот. - Көп коопсуз, анткени ачкыч жок болсо да иштейт.
// TryGetValue колдонуу мисалы Dictionary<string, int> жаштар = new Dictionary<string, int>(); жаштар["Alice"] = 30; int Alice_жашы; if (жаштар.TryGetValue("Alice", out Alice_жашы)) { // "Alice" ачкычы табылды, Alice_жашы 30 // ... колдонобуз } int Bob_жашы; if (жаштар.TryGetValue("Bob", out Bob_жашы)) { // Бул блок ишке ашпайт, анткени "Bob" ачкычы жок } else { // "Bob" ачкычы табылган жок, Bob_жашы 0 (по умолчанию) }
Мындан тышкары, GetValueOrDefault(key) ыкмасын колдонсо болот ( .NET Core 2.1+ жана .NET Standard 2.1+), ал белгилүү ачкыч боюнча маанини кайтарат же по умолчанию маанини, эгер ачкыч жок болсо.
// GetValueOrDefault колдонуу мисалы
Dictionary<string, int> жаштар = new Dictionary<string, int>();
жаштар["Alice"] = 30;
int Alice_жашы = жаштар.GetValueOrDefault("Alice"); // 30
int Bob_жашы = жаштар.GetValueOrDefault("Bob"); // 0 (по умолчанию)