57 lines
1.1 KiB
C#
57 lines
1.1 KiB
C#
using System.Collections;
|
|
|
|
namespace Numbers.NumberFactory;
|
|
|
|
/// <summary>
|
|
/// An enumerator for a list of numbers
|
|
/// </summary>
|
|
/// <inheritdoc cref="IEnumerator{T}" />
|
|
public sealed class NumbersEnumerator : IEnumerator<long>
|
|
{
|
|
/// <summary>
|
|
/// Creates a new instance of <see cref="NumbersEnumerator" /> which will enumerate over the given list
|
|
/// </summary>
|
|
/// <param name="list">List to iterate over</param>
|
|
public NumbersEnumerator(List<long> list)
|
|
{
|
|
List = list;
|
|
Index = -1;
|
|
}
|
|
|
|
private int Index { get; set; }
|
|
private List<long> List { get; }
|
|
|
|
public long Current
|
|
{
|
|
get
|
|
{
|
|
if (Index < 0 || Index >= List.Count)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
return List[Index];
|
|
}
|
|
}
|
|
|
|
public void Dispose() { }
|
|
|
|
object IEnumerator.Current => Current;
|
|
|
|
public bool MoveNext()
|
|
{
|
|
if (Index >= List.Count - 1)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
Index++;
|
|
return true;
|
|
|
|
}
|
|
|
|
public void Reset()
|
|
{
|
|
Index = -1;
|
|
}
|
|
}
|