編譯器錯誤 CS1579
更新:2007 年 11 月
錯誤訊息
foreach 陳述式不能用在型別 'type1' 的變數上,因為 'type2' 未包含 'identifier' 的公用定義
若要使用 foreach 陳述式逐一查看集合,則集合必須符合下列需求︰
它必須是介面、類別或結構。
它必須包括傳回型別的公用 GetEnumerator 方法。
如需詳細資訊,請參閱 HOW TO:使用 foreach 存取集合類別 (C# 程式設計手冊)。
範例
在此範例中,foreach 無法逐一查看集合,因為 MyCollection 中沒有 publicGetEnumerator 方法。
下列範例會產生 CS1579。
// CS1579.cs
using System;
public class MyCollection
{
int[] items;
public MyCollection()
{
items = new int[5] {12, 44, 33, 2, 50};
}
// Delete the following line to resolve.
MyEnumerator GetEnumerator()
// Uncomment the following line to resolve:
// public MyEnumerator GetEnumerator()
{
return new MyEnumerator(this);
}
// Declare the enumerator class:
public class MyEnumerator
{
int nIndex;
MyCollection collection;
public MyEnumerator(MyCollection coll)
{
collection = coll;
nIndex = -1;
}
public bool MoveNext()
{
nIndex++;
return(nIndex < collection.items.GetLength(0));
}
public int Current
{
get
{
return(collection.items[nIndex]);
}
}
}
public static void Main()
{
MyCollection col = new MyCollection();
Console.WriteLine("Values in the collection are:");
foreach (int i in col) // CS1579
{
Console.WriteLine(i);
}
}
}