Ik heb een functie welke een IEnumerable<T> interface terug geeft. De functie doorloopt een vaste lijst en voegt random een item uit aan andere lijst toe aan het totale resultaat.
De originele 'numbers' list is tevens read-only. De extra waarde toevoegen, enumerator terug geven, en daarna weer de waarde verwijderen is geen oplossing.
Hoewel de code perfect werkt, is mijn vraag of er misschien een nettere methode is om een enkele waarde als yield waarde terug te geven.
Volgens de documentatie over yield moet yield in een iterator body staan. Ik heb dus een 'loop' nodig welke slechts eenmalig uitgevoerd wordt.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| public class MyList { private List<int> numbers = new List<int>(); public MyList() { //populate list with some integers for(int i = 1; i <= 10; i++) this.numbers.Add(i); } public IEnumerable<int> GetItems(int extraNumber) { foreach(int i in this.numbers) yield return i; //return the extra integer do { yield return extraNumber; } while(false); } public static void Main(string[] args) { MyList list = new MyList(); IEnumerable<int> result = list.GetItems(13); result = list.GetItems(28); } } |
De originele 'numbers' list is tevens read-only. De extra waarde toevoegen, enumerator terug geven, en daarna weer de waarde verwijderen is geen oplossing.
Hoewel de code perfect werkt, is mijn vraag of er misschien een nettere methode is om een enkele waarde als yield waarde terug te geven.
Volgens de documentatie over yield moet yield in een iterator body staan. Ik heb dus een 'loop' nodig welke slechts eenmalig uitgevoerd wordt.
[ Voor 0% gewijzigd door Niemand_Anders op 31-01-2008 13:54 . Reden: typo ]
If it isn't broken, fix it until it is..