編譯器錯誤 CS0202
foreach 要求 'type.GetEnumerator()' 的傳回類型 'type' 必須要有適合的公用 MoveNext 方法以及公用 Current 屬性
GetEnumerator 函式,用來啟用 foreach 陳述式的使用,無法傳回指標或陣列;它必須傳回可作為列舉值之類別的執行個體。 作為列舉值的適當需求包括公用 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);
}
}
}