// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Runtime.CompilerServices; namespace System.Collections.Generic { // Base interface for all generic enumerators, providing a simple approach // to iterating over a collection. [Intrinsic] public interface IEnumerator<out T> : IDisposable, IEnumerator where T : allows ref struct { // Returns the current element of the enumeration. The returned value is // undefined before the first call to MoveNext and following a // call to MoveNext that returned false. Multiple calls to // GetCurrent with no intervening calls to MoveNext // will return the same object. new T Current { get; } // NOTE: An implementation of an enumerator using a ref struct T will // not be able to implement IEnumerator.Current to return that T (as // doing so would require boxing). It should throw a NotSupportedException // from that property implementation. } }