17. KeyValuePair

מדי פעם אנחנו צריכים לרוץ על כל הזוגות שיש בIDictionary.

הדרך הפחות הטובה לעשות זאת היא כך

1
2
3
4
5
6
7
IDictionary<string, ulong> dictionary;
foreach (string currentKey in dictionary.Keys)
{
ulong currentValue = dictionary[currentKey];
// ...
}

למרבה המזל IDictionary<TKey,TValue> מממשICollection<KeyValuePair<TKey, TValue>> ולכן גם

1
IEnumerable<KeyValuePair<TKey, TValue>>:

הדרך היותר טובה היא כך:

1
2
3
4
5
6
7
8
IDictionary<string, ulong> dictionary;
foreach (KeyValuePair<string, ulong> currentPair in dictionary)
{
string currentKey = currentPair.Key;
ulong currentValue = currentPair.Value;
// ...
}

ההבדל הוא שבשיטה הראשונה אנחנו מחפשים עבור כל מפתח את הערך שלו (אמנם בכמעט $ o(1) $), ובשיטה השנייה אנחנו מראש עוברים על כל הזוגות.

יום טוב

שתף