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