integer range collection expression

예전에 블로그에 올렸던 내용입니다.

사용코드:

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);
    } 
}
3개의 좋아요

튜플도 섞어구현할수도 있겠네요 ㅋㅋ

foreach(var n in (0..10, 0.2f))
{
   //...
}
2개의 좋아요