Compilerfehler CS1640
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.
Der Typ erbt von mindestens zwei Instanzen von IEnumerator<T>, das bedeutet, es gibt keine eindeutige Enumeration des Typs, den foreach
verwenden 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 specifying the type of IEnumerable<T>
// foreach (int i in (IEnumerable<int>)new C()){}
return 1;
}
}
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für