예전에 블로그에 올렸던 내용입니다.
사용코드:
foreach(var n in 0..10)
{
//...
}
foreach(var n in ..10)
{
//...
}
구현 코드 :
public ref struct RangeEnumerator
{
private int _current;
private int _end;
public int Current => _current++;
public bool MoveNext() => _current < _end;
public RangeEnumerator(Range range)
{
_current = range.Start.Value;
_end = range.End.Value;
}
}
public static class RangeExtentions
{
public static RangeEnumerator GetEnumerator(this Range range)
{
return new RangeEnumerator(range);
}
}