Sdílet prostřednictvím


Compilerfehler CS1640

Aktualisiert: November 2007

Fehlermeldung

Die foreach-Anweisung kann für Variablen vom Typ "Typ" nicht verwendet werden, da sie mehrere Instanziierungen von "Schnittstelle" implementiert. Nehmen Sie eine Umwandlung in eine spezifische Schnittstelleninstanziierung vor.
foreach statement cannot operate on variables of type 'type' because it implements multiple instantiations of 'interface', try casting to a specific interface instantiation

Der Typ erbt von mindestens zwei Instanzen von IEnumerator<T>. Das heißt, dass keine eindeutige Enumeration des Typs vorhanden ist, die von foreach verwendet werden kann. Geben Sie den Typ von IEnumerator <T> an, oder verwenden Sie ein anderes Schleifenkonstrukt.

Beispiel

Im folgenden Beispiel wird der Fehler CS1640 generiert:

// 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;
    }
}