Compilerfehler CS1579
Eine foreach-Anweisung kann nicht für Variablen vom Typ „Typ1“ verwendet werden, da „Typ2“ keine öffentliche Definition für „Bezeichner“ enthält.
Um eine Auflistung mit der foreach-Anweisung zu durchlaufen, muss die Auflistung die folgenden Anforderungen erfüllen:
- Der zugehörige Typ muss eine öffentliche parameterlose Methode
GetEnumerator
aufweisen, deren Rückgabetyp entweder Klasse, Struktur oder Schnittstellentyp ist. - Der Rückgabetyp der Methode
GetEnumerator
muss eine öffentliche Eigenschaft namensCurrent
und eine öffentliche parameterlose Methode namensMoveNext
aufweisen, deren Rückgabetyp Boolean ist.
Beispiel
Im folgenden Beispiel wird CS1579 generiert, weil die Klasse MyCollection
nicht die öffentliche Methode GetEnumerator
enthält:
// 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.Length);
}
public int Current => 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);
}
}
}
Zusammenarbeit auf GitHub
Die Quelle für diesen Inhalt finden Sie auf GitHub, wo Sie auch Issues und Pull Requests erstellen und überprüfen können. Weitere Informationen finden Sie in unserem Leitfaden für Mitwirkende.
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