共用方式為


編譯器錯誤 CS1640

更新:2007 年 11 月

錯誤訊息

foreach 陳述式無法用在型別為 'type' 的變數上,因為它會實作多個 'interface' 的執行個體,請嘗試轉型為特定的介面執行個體

型別繼承自 IEnumerator<T> 的兩個或多個執行個體,這表示型別中沒有 foreach 可使用的唯一列舉型別 (Enumeration)。請指定 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 specifing the type of IEnumerable<T>
        // foreach (int i in (IEnumerable<int>)new C()){}
        return 1;
    }
}