コンパイラ エラー CS0202
foreach では、'type.GetEnumerator()' の戻り値の型 'type' に適切なパブリック MoveNext メソッドおよびパブリック Current プロパティが含まれている必要があります
foreach ステートメントを使用できるようにするために使用される GetEnumerator 関数は、ポインターまたは配列を返すことはできません。列挙子として機能できるクラスのインスタンスを返す必要があります。 列挙子として機能するための適切な要件には、パブリック Current プロパティおよびパブリック MoveNext メソッドが含まれます。
注意
C# 2.0 では、コンパイラによって Current および MoveNext が自動的に生成されます。 詳細については、「ジェネリック インターフェイス」のコード例を参照してください。
次の例では CS0202 が生成されます。
// CS0202.cs
public class C1
{
public int Current
{
get
{
return 0;
}
}
public bool MoveNext ()
{
return false;
}
public static implicit operator C1 (int c1)
{
return 0;
}
}
public class C2
{
public int Current
{
get
{
return 0;
}
}
public bool MoveNext ()
{
return false;
}
public C1[] GetEnumerator ()
// try the following line instead
// public C1 GetEnumerator ()
{
return null;
}
}
public class MainClass
{
public static void Main ()
{
C2 c2 = new C2();
foreach (C1 x in c2) // CS0202
{
System.Console.WriteLine(x.Current);
}
}
}
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET に関するフィードバック
.NET はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。