이게 얼마나 실용적인가는 잘 모르겠지만, 어쨌든 C#에서도 확장메서드를 간단히 만들면 다음의 코드가 정상 동작 합니다.
foreach (var i in 1..1000)    // CS1579, `Range`에 `GetEnumerator()`정의가 없어 오류
{
    Console.WriteLine(i); 
}
다음의 코드를 추가,
static class RangeExtension
{
    public static IEnumerator<int> GetEnumerator(this Range @this)
    {
        for (var i = @this.Start.Value; i < @this.End.Value; i++)
        {
            yield return i;
        }
    }
}
이후 정상 컴파일 되고 잘 동작합니다.
- foreach 대상은 확장메소드로 GetEnumerator()를 구현해도 수용합니다!
- foreach (var i in 1..1000)이런 표현은… 어떠신가요?