Sobes.tech
Junior — Middle

Кадом усулҳо интерфейси IEnumerable-ро дар забони барномасозӣ амалӣ мекунанд?

sobes.tech AI

Ҷавоб аз AI

Дар забони C# интерфейс IEnumerable дар кластар ва структураҳо иҷро мешавад, ки усули GetEnumerator()-ро таъмин мекунанд, ки объекти иҷрокунандаи интерфейси IEnumerator-ро бармегардонад. Ин имкон медиҳад, ки коллексия бо истифода аз даврзании foreach гузаронида шавад.

Асосӣ роҳҳои иҷрои IEnumerable:

  1. Иҷрои дастӣ:
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];
    }
}
  1. Иҷрои интерфейси умумии 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();
}
  1. Истифодаи коллексияҳои китобхонаи стандартӣ, ки аллакай IEnumerable-ро иҷро мекунанд (масалан, List<T>, Array).

Нуктаи асосӣ — таъмин кардани методи GetEnumerator(), киEnumerator-ро барои гузаронидани унсурҳои коллексия бармегардонад.