Iterator pattern & Enumerables #2 Flashcards
Fråga: Vad är huvudsyftet med Iterator-pattern i objektorienterad programmering?
A) Att öka prestanda vid dataåtkomst
B) Att tillåta sekventiell åtkomst till element i en samling utan att avslöja den underliggande datstrukturen
C) Att säkerställa dataintegritet i multitrådade applikationer
Svar: B
IEnumerator<string> enumerator = myList.GetEnumerator(); while (enumerator.MoveNext()) { Console.WriteLine(enumerator.Current); }
Fråga: Vad gör koden ovan i kontexten av IEnumerable och IEnumerator?
A) Raderar element från myList
B) Skriver ut varje element i myList till konsolen
C) Jämför elementen i myList
Svar: B
IEnumerable<int> numbers = new List<int> { 1, 2, 3 }; foreach (var num in numbers) { Console.Write(num + " "); }
Fråga: Vilken är outputen av koden ovan?
A) 1 2 3
B) 0 1 2
C) Inget, det finns ett kompileringsfel
Svar: A
IEnumerator enumerator = new List<int>().GetEnumerator(); enumerator.MoveNext(); var current = enumerator.Current;
Fråga: Kompilerar koden ovan utan fel?
A) Ja
B) Nej, Current är inte tillgängligt
C) Nej, MoveNext() returnerar void
Svar: A
Fill in the gap _\\\_\
var numbers = new List<int> { 1, 2, 3 }; var enumerator = numbers.GetEnumerator(); while (enumerator.\_\_\_\_\_\_()) { Console.Write(enumerator.Current + " "); }
A) Continue
B) MoveNext
C) Next
Svar: B
Fråga: Hur relaterar begreppet “Enumerable” i .NET till Iterator pattern?
A) Enumerable är en datastruktur som lagrar element i minnet.
B) Enumerable är en implementation av Iterator-mönstret, som möjliggör sekventiell genomgång av en samling.
C) Enumerable är en metod för att omvandla data mellan olika typer i en applikation.
Svar: B
public class MyCollection : IEnumerable<int> { private List<int> list = new List<int>(); public IEnumerator<int> GetEnumerator() { return list.GetEnumerator(); } // Andra metoder och kod här... }
Fråga: Vad möjliggör klassen MyCollection i sammanhanget av iteration?
A) Direkt modifiering av list utanför klassen.
B) Sekventiell åtkomst till elementen i list via en enumerator.
C) Automatisk sortering av list när nya element läggs till.
Svar: B
var numbers = Enumerable.Range(1, 3); foreach (var number in numbers) { Console.Write(number + " "); }
Fråga: Vilken är outputen av koden ovan?
A) 1 2 3
B) 1 2 3 4
C) 0 1 2
Svar: A
IEnumerable<int> numbers = new List<int> { 1, 2, 3 }; IEnumerator<int> enumerator = numbers.GetEnumerator(); while (enumerator.MoveNext()) { Console.WriteLine(enumerator.Current); numbers.Add(4); }
Fråga: Kompilerar koden ovan korrekt?
A) Ja
B) Nej, Add-metoden finns inte på IEnumerable
C) Nej, man kan inte ändra en samling under iteration
Svar: B
var data = new List<string> { "apple", "banana", "cherry" }; var iterator = data.GetEnumerator(); while (iterator.MoveNext()) { Console.Write("Current fruit: " + iterator.\_\_\_\_\_\_\_ + "\n"); }
Fråga: Vilken egenskap hos iterator saknas i koden ovan för att korrekt hämta och skriva ut det aktuella elementet?
A) Value
B) Current
C) Element
Svar: B