C # Различия между различными типами System.Collection (.Generic) - PullRequest
3 голосов
/ 11 августа 2010

Я очень озадачен различиями между различными типами языка C #. в частности

  • IEnumerable
  • IEnumerator

Ответы [ 2 ]

14 голосов
/ 11 августа 2010

IEnumerable<T> представляет последовательность, которую можно перечислить - например, список.

IEnuerator<T> эффективно представляет курсор в последовательности .

Итак, представьте, что у вас есть последовательность - вы можете повторить ее с несколькими «курсорами» одновременно.Например:

List<string> names = new List<string> { "First", "Second", "Third" };
foreach (string x in names)
{
    foreach(string y in names)
    {
        Console.WriteLine("{0} {1}");
    }
}

Здесь List<string> реализует IEnumerable<string>, а foreach повторяет каждый вызов GetEnumerator() для получения IEnumerator<string>.Поэтому, когда мы находимся в середине внутреннего цикла, есть два независимых курсора, повторяющихся в одной последовательности.

2 голосов
/ 11 августа 2010

IEnumerable коллекция, которую можно перечислить.

IEnumerator вещь, которая фактически управляет местоположением в коллекции, обеспечивает доступ к текущему элементу и позволяет перейти к следующему.

Таким образом, можно использовать IEnumerator, чтобы пройти через IEnumerable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...