foreach 문은 ‘interface’의 여러 인스턴스화를 구현하기 때문에 ‘type’ 형식의 변수에는 수행할 수 없습니다. 특정 인터페이스 인스턴스화로 캐스팅해 보세요.
형식이 IEnumerator<T>의 여러 인스턴스에서 상속되므로 foreach에서 사용할 수 있는 형식의 고유한 열거형이 없습니다. IEnumerator<T>의 형식을 지정하거나 다른 루프 구문을 사용하세요.
예시
다음 샘플에서는 CS1640 오류가 발생합니다.
// CS1640.cs
using System;
using System.Collections;
using System.Collections.Generic;
public class C : IEnumerable, IEnumerable<int>, IEnumerable<string>
{
IEnumerator<int> IEnumerable<int>.GetEnumerator()
{
yield break;
}
IEnumerator<string> IEnumerable<string>.GetEnumerator()
{
yield break;
}
IEnumerator IEnumerable.GetEnumerator()
{
return (IEnumerator)((IEnumerable<string>)this).GetEnumerator();
}
}
public class Test
{
public static int Main()
{
foreach (int i in new C()){} // CS1640
// Try specifying the type of IEnumerable<T>
// foreach (int i in (IEnumerable<int>)new C()){}
return 1;
}
}
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET