Iterators Flashcards
What is the primary purpose of the “Iterator pattern”?
- To directly modify elements within a collection
- To access elements of a collection without exposing its underlying structure
- To sort elements in a collection
- To link multiple collections together
- To access elements of a collection without exposing its underlying structure
(Förklaring: Iterator-mönstret gör att vi kan komma åt elementen i en samling utan att exponera dess underliggande struktur, vilket skapar en lös koppling).
What does an iterator allow a client to do?
- Access an aggregate object’s elements sequentially without knowing its internal structure
- Modify an aggregate object’s elements
- Randomly access any element in an aggregate object
- Directly control an aggregate object’s internal representation
- Access an aggregate object’s elements sequentially without knowing its internal structure
(Förklaring: Iteratorn tillåter sekventiell åtkomst till en samlings element utan att klienten behöver känna till samlingens interna struktur).
In a typical Iterator pattern, what method advances to the next element in the sequence?
- Advance()
- MoveNext()
- NextElement()
- FetchNext()
- MoveNext()
(Förklaring: MoveNext() är metoden i C#-iteratorer som går vidare till nästa element i samlingen).
Which interface in C# represents an iterator that can be used to traverse a collection?
- ICollection
- IAggregate
- IEnumerator
- IEnumerable
- IEnumerator
(Förklaring: IEnumerator är gränssnittet i C# som används för att iterera genom en samling element).
What is the purpose of the IEnumerable interface in C#?
- To provide sorting capabilities for collections
- To enable collections to be traversed sequentially
- To allow random access to collection elements
- To manage collection size
- To enable collections to be traversed sequentially
(Förklaring: IEnumerable gör att en samling kan itereras sekventiellt och tillhandahåller en GetEnumerator-metod som returnerar en IEnumerator).
What method does IEnumerable<T> provide to obtain an enumerator?</T>
- GetItems()
- GetEnumerator()
- Next()
- GetEnumerable()
- GetEnumerator()
(Förklaring: GetEnumerator() returnerar en enumerator som kan användas för att iterera genom samlingen).
In the Iterator pattern, what does the method “MoveNext()” return when there are no more elements?
- A null reference
- An exception
- false
- true
- false
(Förklaring: MoveNext() returnerar false när iteratorn når slutet av samlingen, vilket stoppar iterationen).
How do foreach loops work with IEnumerable in C#?
- They initialize an IEnumerator and manually call MoveNext()
- They iterate over a collection without exposing its underlying structure
- They only work with List<T> collections</T>
- They require manual index handling
- They iterate over a collection without exposing its underlying structure
(Förklaring: foreach-loopar använder IEnumerable för att iterera genom en samling utan att exponera dess interna struktur, vilket gör koden enkel och säker).
What does the “yield” keyword in C# allow you to do in an iterator?
- Pause the iterator function and return a value
- Terminate the iterator function immediately
- Restart the iterator function from the beginning
- Access elements in reverse order
- Pause the iterator function and return a value
(Förklaring: “yield return” gör att iteratorn pausar och returnerar ett värde, för att fortsätta när nästa element efterfrågas).
What happens when the “yield return” statement is encountered in an iterator?
- The iterator resets to the beginning
- The iterator returns the current value and pauses execution
- The iterator throws an exception
- The iterator exits without returning a value
- The iterator returns the current value and pauses execution
(Förklaring: När yield return påträffas, returneras det aktuella värdet och executionen pausar tills nästa element begärs).
Which statement can be used to stop an iterator’s execution early?
- return false
- yield exit
- yield break
- break
- yield break
(Förklaring: “yield break” stoppar iteratorn omedelbart och avslutar sekvensen, vilket gör att inga fler element returneras).
What is lazy evaluation in the context of iterators?
- Elements are computed only when accessed
- Elements are precomputed and stored in memory
- Iteration is completed in reverse order
- All elements are computed upon iterator creation
- Elements are computed only when accessed
(Förklaring: Lazy evaluation innebär att elementen bara beräknas när de faktiskt efterfrågas, vilket sparar minne och processorkraft).
How does lazy evaluation benefit the use of iterators in C#?
- It makes iterators faster by precomputing values
- It reduces memory usage by computing values only when needed
- It enforces strict ordering of operations
- It ensures all elements are computed immediately
- It reduces memory usage by computing values only when needed
(Förklaring: Lazy evaluation minskar minnesanvändningen genom att beräkna värden endast när de behövs, istället för att hålla alla värden i minnet samtidigt).
What is an infinite iterator?
- An iterator that stops at the last element and restarts
- An iterator that repeatedly cycles through elements
- An iterator that continually produces elements without an end
- An iterator that allows random access to elements
- An iterator that continually produces elements without an end
(Förklaring: En oändlig iterator genererar element kontinuerligt utan ett förutbestämt slut).
Which of the following is a practical use case for an infinite iterator?
- Iterating over a fixed-size array
- Generating a sequence of Fibonacci numbers indefinitely
- Enumerating all elements in a List<T></T>
- Sorting elements in an array
- Generating a sequence of Fibonacci numbers indefinitely
(Förklaring: En oändlig iterator kan användas för att generera en obegränsad sekvens, som en Fibonacci-serie, utan att behöva veta antalet element i förväg).