Bardzo cieszy mnie w C# obecność instrukcji foreach, gdyż bardzo przydawała mi się ona, gdy programowałam w PHP.
Jednak w przeciwieństwie do PHP C# nie pozwala na zmianę wartości danej kolekcji w tejże pętli.
Bardzo cieszy mnie w C# obecność instrukcji foreach, gdyż bardzo przydawała mi się ona, gdy programowałam w PHP.
Jednak w przeciwieństwie do PHP C# nie pozwala na zmianę wartości danej kolekcji w tejże pętli.
A propos foreach (pośrednio) to osobiście jestem pod wrażeniem iteratorów. Pomysł niby nie jest nowy, ale dopiero w C# jest pełna magia. Na przykład coś takiego:
// klasa użytkownika implementująca interfejs IEnumerable w ten sposób,
// że w pętli foreach można przejść cały plik czytając kolejne linie tekstu.
TextFileIterator iterator = new TextFileIterator(„c:\\TextFile.txt”);
foreach (string line in iterator)
Console.WriteLine(line);
To oczywiście prosty przykład – aktualnie pracuję nad kolekcją, która jest przechowywana na dysku twardym, nazwałem ją PersistentCollection i jest m.in. typem listy (IList). Kolekcja od początku do końca przechowywana jest na dysku, tak że jak program się wysypie czy zabraknie prądu to kolekcja i tak będzie zapamiętana. Teraz pracuję nad sortowaniem.
foreach w C++ znajdzie się w C++0x, więc nie jest tak źle ;]
Actually, in PHP you can change the value in the array.
e.g.
foreach($arr as &$val) { $val++; }
for_each jest w C++ tylko w STLu (pomijając C++11). Trzeba dać #include .