// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. namespace System.Collections { // This interface represents an enumerator that allows sequential access to the // elements of a dictionary. Upon creation, an enumerator is conceptually // positioned before the first element of the enumeration. The first call to the // MoveNext method brings the first element of the enumeration into view, // and each successive call to MoveNext brings the next element into // view until MoveNext returns false, indicating that there are no more // elements to enumerate. Following each call to MoveNext, the // Key and Value methods are used to obtain the key and // value of the element currently in view. The values returned by calls to // Key and Value are undefined before the first call to // MoveNext and following a call to MoveNext that returned false. // Enumerators are typically used in while loops of the form // // IDictionaryEnumerator e = ...; // while (e.MoveNext()) { // Object key = e.Key; // Object value = e.Value; // ... // } // // The IDictionaryEnumerator interface extends the IEnumerator // inerface and can thus be used as a regular enumerator. The Current // method of an IDictionaryEnumerator returns a DictionaryEntry containing // the current key and value pair. However, the GetEntry method will // return the same DictionaryEntry and avoids boxing the DictionaryEntry (boxing // is somewhat expensive). // public interface IDictionaryEnumerator : IEnumerator { // Returns the key of the current element of the enumeration. The returned // value is undefined before the first call to GetNext and following // a call to GetNext that returned false. Multiple calls to // GetKey with no intervening calls to GetNext will return // the same object. // Object Key { get; } // Returns the value of the current element of the enumeration. The // returned value is undefined before the first call to GetNext and // following a call to GetNext that returned false. Multiple calls // to GetValue with no intervening calls to GetNext will // return the same object. // Object Value { get; } // GetBlock will copy dictionary values into the given Array. It will either // fill up the array, or if there aren't enough elements, it will // copy as much as possible into the Array. The number of elements // copied is returned. // DictionaryEntry Entry { get; } } }