Diciamo che sto progettando una struttura di dati personalizzata come uno stack o una coda (ad esempio - potrebbe essere un'altra raccolta arbitraria ordinata che ha l'equivalente logico di push
e pop
metodi - ovvero metodi di accesso distruttivi).
Se si stesse implementando un iteratore (in .NET, in particolare IEnumerable<T>
) su questa raccolta che è spuntato su ogni iterazione, ciò avrebbe infranto IEnumerable<T>
il contratto implicito?
Ha IEnumerable<T>
questo contratto implicito?
per esempio:
public IEnumerator<T> GetEnumerator()
{
if (this.list.Count > 0)
yield return this.Pop();
else
yield break;
}