0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
using System;
namespace Aquapear.Collections
{
/// <summary>
/// Некая перечислимая в цикле foreach сущность.
/// </summary>
public abstract class Enumerable<TItem> : System.Collections.Generic.IEnumerable<TItem>
{
/// <summary> Чтобы сущность перечислялась создаётся перечислитель для неё </summary>
abstract public Enumerator<TItem> CreateEnumerator();
//---
public System.Collections.Generic.IEnumerator<TItem> GetEnumerator()
{ return CreateEnumerator(); }
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{ return CreateEnumerator(); }
}
}
using System;
namespace Aquapear.Collections
{
public abstract class Enumerator<TItem>
: System.Collections.Generic.IEnumerator<TItem>
{
abstract public TItem Current();
abstract public void Dispose();
abstract public bool MoveNext();
abstract public void Reset();
//---
object System.Collections.IEnumerator.Current
{ get { return (object)Current(); } }
TItem System.Collections.Generic.IEnumerator<TItem>.Current
{ get { return Current(); } }
}
}
Когда IEnumerable<T> уже не возбуждает
Запостил:
d_fomenok ,
11.09.2016 (Updated 31.03.2018 )
ла-ла-ла-ла-ла
ПАДНАСРЁМ
ла-ла-ла-ла-ла
Ид аль-Адъхьа мубарак!