Mikä on paras tapa iteroida sanakirjan yli?

Olen nähnyt muutamia eri tapoja iteroida sanakirjan yli C#:ssa. Onko olemassa vakiotapaa?

Ratkaisu
foreach(KeyValuePair entry in myDictionary)
{
    // do something with entry.Value or entry.Key
}
Kommentit (24)

Jos yrität käyttää yleistä sanakirjaa C#-kielessä samalla tavalla kuin käyttäisit assosiatiivista joukkoa jossakin muussa kielessä:

foreach(var item in myDictionary)
{
  foo(item.Key);
  bar(item.Value);
}

Tai jos sinun tarvitsee vain iteroida avainkokoelman yli, käytä komentoa

foreach(var item in myDictionary.Keys)
{
  foo(item);
}

Ja lopuksi, jos olet kiinnostunut vain arvoista:

foreach(var item in myDictionary.Values)
{
  foo(item);
}

(Huomaa, että var-avainsana on valinnainen C# 3.0:n ja uudempien versioiden ominaisuus, voit myös käyttää avainten/arvojen tarkkaa tyyppiä tässä)

Kommentit (5)

Sanoisin, että foreach on vakiotapa, vaikka se tietenkin riippuu siitä, mitä etsit.

foreach(var kvp in my_dictionary) {
  ...
}

Tätäkö sinä etsit?

Kommentit (2)