Junior
Welche Objekte können in einer foreach-Schleife verwendet werden?
sobes.tech KI
Antwort von AI
In der foreach-Schleife können Objekte verwendet werden, die die Schnittstelle System.Collections.IEnumerable oder System.Collections.Generic.IEnumerable<T> implementieren.
Haupttypen von Objekten:
- Arrays (eindimensional und mehrdimensional)
- Sammlungen, die
IEnumerableoderIEnumerable<T>implementieren:List<T>Dictionary<TKey, TValue>HashSet<T>Queue<T>undStack<T>- Andere Klassen aus den Namespaces
System.CollectionsundSystem.Collections.Generic
- Strings (
System.String- iterieren über Zeichen) - Objekte, die durch LINQ-Abfragen zurückgegeben werden
- Eigenständige Datentypen, die eine der genannten Schnittstellen implementieren.
Beispiel:
// Array
string[] colors = {"rot", "grün", "blau"};
foreach (string color in colors)
{
// ...
}
// List<T>
List<int> numbers = new List<int> {1, 2, 3, 4, 5};
foreach (int number in numbers)
{
// ...
}
// string
string text = "hallo";
foreach (char c in text)
{
// ...
}
// Dictionary<TKey, TValue> iteriert über KeyValuePair<TKey, TValue>
Dictionary<string, int> ages = new Dictionary<string, int>
{
{"Alice", 30},
{"Bob", 25}
};
foreach (KeyValuePair<string, int> eintrag in ages)
{
// eintrag.Key, eintrag.Value
}
// Eigenständige Klasse, die IEnumerable<T> implementiert
public class MyCollection : IEnumerable<int>
{
private int[] _data = {10, 20, 30};
public IEnumerator<int> GetEnumerator()
{
foreach (var item in _data)
{
yield return item; // Verwendung des Iterators
}
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
// Verwendung der eigenen Klasse
MyCollection myCollection = new MyCollection();
foreach (int item in myCollection)
{
// ...
}