Junior — Middle
Кадом усулҳо интерфейси IEnumerable-ро дар забони барномасозӣ амалӣ мекунанд?
sobes.tech AI
Ҷавоб аз AI
Дар забони C# интерфейс IEnumerable дар кластар ва структураҳо иҷро мешавад, ки усули GetEnumerator()-ро таъмин мекунанд, ки объекти иҷрокунандаи интерфейси IEnumerator-ро бармегардонад. Ин имкон медиҳад, ки коллексия бо истифода аз даврзании foreach гузаронида шавад.
Асосӣ роҳҳои иҷрои IEnumerable:
- Иҷрои дастӣ:
public class MyCollection : IEnumerable
{
private object[] items = {1, 2, 3};
public IEnumerator GetEnumerator()
{
for (int i = 0; i < items.Length; i++)
yield return items[i];
}
}
- Иҷрои интерфейси умумии
IEnumerable<T>:
public class MyCollection<T> : IEnumerable<T>
{
private T[] items;
public MyCollection(T[] items) { this.items = items; }
public IEnumerator<T> GetEnumerator()
{
for (int i = 0; i < items.Length; i++)
yield return items[i];
}
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}
- Истифодаи коллексияҳои китобхонаи стандартӣ, ки аллакай
IEnumerable-ро иҷро мекунанд (масалан,List<T>,Array).
Нуктаи асосӣ — таъмин кардани методи GetEnumerator(), киEnumerator-ро барои гузаронидани унсурҳои коллексия бармегардонад.