이게 얼마나 실용적인가는 잘 모르겠지만, 어쨌든 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)
이런 표현은… 어떠신가요?