Junior
Milyen objektumokat lehet használni a foreach ciklusban?
sobes.tech MI
Válasz az MI-től
A foreach ciklusban olyan objektumokat lehet használni, amelyek megvalósítják a System.Collections.IEnumerable vagy System.Collections.Generic.IEnumerable<T> interfészt.
Fő típusok:
- Tömbök (egydimenziós és többdimenziós)
- Olyan kollekciók, amelyek megvalósítják az
IEnumerablevagyIEnumerable<T>-t:List<T>Dictionary<TKey, TValue>HashSet<T>Queue<T>ésStack<T>- Egyéb osztályok a
System.CollectionsésSystem.Collections.Genericnévterekből
- Szövegek (
System.String- karakterek szerint iterál) - LINQ lekérdezések által visszaadott objektumok
- Saját típusok, amelyek megvalósítják a fent említett interfészeket.
Példa:
// Tömb
string[] colors = {"piros", "zöld", "kék"};
foreach (string color in colors)
{
// ...
}
// List<T>
List<int> numbers = new List<int> {1, 2, 3, 4, 5};
foreach (int number in numbers)
{
// ...
}
// szöveg
string text = "helló";
foreach (char c in text)
{
// ...
}
// Dictionary<TKey, TValue> iterál KeyValuePair<TKey, TValue>-n
Dictionary<string, int> ages = new Dictionary<string, int>
{
{"Alice", 30},
{"Bob", 25}
};
foreach (KeyValuePair<string, int> entry in ages)
{
// entry.Key, entry.Value
}
// Saját osztály, amely implementálja az IEnumerable<T>-t
public class MyCollection : IEnumerable<int>
{
private int[] _data = {10, 20, 30};
public IEnumerator<int> GetEnumerator()
{
foreach (var item in _data)
{
yield return item; // Iterator használata
}
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
// Saját osztály használata
MyCollection myCollection = new MyCollection();
foreach (int item in myCollection)
{
// ...
}