Junior — Middle
Kunt u uitleggen wat het iterator-ontwerppatroon is en hoe het wordt toegepast?
sobes.tech AI
Antwoord van AI
Het ontwerp patroon Iterator is bedoeld om de elementen van een collectie sequentieel te doorlopen zonder de interne structuur ervan prijs te geven.
Belangrijkste idee:
- De iterator biedt een interface om toegang te krijgen tot de elementen van de collectie één voor één.
- Het stelt de client-code in staat om door de elementen te lopen zonder te weten hoe de collectie intern is georganiseerd.
In C# wordt de iterator geïmplementeerd met behulp van de interfaces IEnumerator en IEnumerable. Gewoonlijk wordt het sleutelwoord yield gebruikt, dat het maken van iterators vereenvoudigt.
Voorbeeld van een iterator in C#:
using System;
using System.Collections;
using System.Collections.Generic;
class MyCollection : IEnumerable<int>
{
private int[] data = {1, 2, 3, 4, 5};
public IEnumerator<int> GetEnumerator()
{
foreach (var item in data)
{
yield return item; // geeft de elementen één voor één terug
}
}
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}
class Program
{
static void Main()
{
var collection = new MyCollection();
foreach (var item in collection)
{
Console.WriteLine(item);
}
}
}
Hier implementeert MyCollection IEnumerable<int>, waardoor foreach kan worden gebruikt om door de elementen te lopen. De iterator verbergt de details van de gegevensopslag en biedt een eenvoudige manier om ze te doorlopen.