private void TraverseInOrder <T>(Predicate <T> action, ICollection <T> list) { InOrderFlatEnumerator <TKey, TValue> enumerator = new InOrderFlatEnumerator <TKey, TValue>(this); ICollection <KeyValuePair <TKey, TValue> > lstIterator = enumerator.Iterator; foreach (KeyValuePair <TKey, TValue> entry in lstIterator) { list.Add(action(entry)); } }
/// <summary>Copies the Tree elements to a one-dimensional Array instance at the specified index.</summary> /// <param name="array">The one dimensional Array to copy the elements to.</param> /// <param name="index">The zero-based index in array at which copying begins.</param> /// <exception cref="ArgumentNullException">Thrown if array is null.</exception> /// <exception cref="ArgumentOutOfRangeException">Thrown if index is less than zero or if index /// is greater than the size of array.</exception> /// <exception cref="ArgumentException">Thrown if the number of items in the list is greater than the /// available space in array.</exception> /// <exception cref="InvalidCastException">The type of the source Tree cannot be cast automatically /// to the type of the destination array.</exception> public void CopyTo(KeyValuePair <TKey, TValue>[] array, int index) { if (array == null) { throw new ArgumentNullException("array", "array cannot be null"); } if ((index < 0) || (index >= array.Length)) { throw new ArgumentOutOfRangeException("index", index, "index must be greater than zero and less than the size of array"); } if ((array.Length - index) < Count) { throw new ArgumentException("array is not large enough to store the list", "array"); } InOrderFlatEnumerator <TKey, TValue> enumerator = new InOrderFlatEnumerator <TKey, TValue>(this); enumerator.Iterator.CopyTo(array, index); }