|
dev
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
iterator in Dictionary<>?Is there anything correspondant to the iterator for Dictionary<>? For
example, something which is similar to std::map::iterator in C++? Reply please. Thanks in advance. Hyun-jik Bae "Hyun-jik Bae" <imays_NOSPAM_@paran.com> a écrit dans le message de news: uO889zi4GHA.3***@TK2MSFTNGP02.phx.gbl...| Is there anything correspondant to the iterator for Dictionary<>? For Sure, there are two.| example, something which is similar to std::map::iterator in C++? { Dictionary<string, MyType> dict = new Dictionary<string, MyType>(); ... foreach (string s in dict.Keys) ... foreach (MyType t in dict.Values) ... } Joanna -- Joanna Carter [TeamB] Consultant Software Engineer Hyun-jik Bae wrote:
> Is there anything correspondant to the iterator for Dictionary<>? For All of the framework collection classes implement IEnumerable (and > example, something which is similar to std::map::iterator in C++? IEnumerable<T> for generic collections). IEnumerable provides a simple iterator-like in-order enumeration of the collection. The exact type of the enumerator for a collection is generally a nested, private class, so you never actually declare variables of those types. Instead, you use the IEnumerable ( <T> ) interface type. Using C++/CLI or C# (I don't know about VB.NET) you usually don't even declare variables of type IEnumerable. Rather, you make use of the built-in language feature known as foreach. foreach (T t in collection) { } is syntactic sugar for: IEnumerable<T> it = collection.GetEnumerator(); while (it.MoveNext()) { T t = it.Current; // ... } In the case of System.Collections.Generic.Dictionary, there are 3 possible iterators: Dictionary<K,V> dict = ... dict.GetEnumerator() - returns IEnumerable<System.Collections.Generic.KeyValuePair<K,V>>. This is most closely equivalent to std::map::iterator (which iterates over std::pair<K,V>). dict.Keys.GetEnumerator() - returns IEnumerable<K>. This iterator enumerates the keys in the dictionary. dict.Values.GetEnumerator() - returns IEnumerable<V>. This iterator enumerates the values in the dictionary in the same order that the keys are returned by dict.Keys.GetEnumerator(). -cd Hyun-jik Bae <imays_NOSPAM_@paran.com> wrote:
> Is there anything correspondant to the iterator for Dictionary<>? For There's the Keys property to return an enumeration of the keys, the > example, something which is similar to std::map::iterator in C++? > > Reply please. Thanks in advance. Values property to return an enumeration of the values, or just call GetEnumerator() (or use foreach) to get an enumeration of KeyValuePair items. -- Jon Skeet - <sk***@pobox.com> http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet If replying to the group, please do not mail me too |
|||||||||||||||||||||||