Od jakiegoś czasu mnie zastanawia, czy są jakieś ograniczenia w postaci, jaką może przybrać pętla for? Czy iteracje muszą się ogólnie opierać na operacjach na liczbach całkowitych, czy też można sobie przybrać dowolne typy o ile zawartość nawiasu zachowa postać "przypisanie wartości początkowej; warunek kontynuowania, modyfikacja zmiennej"? Czy stoi coś na przeszkodzie, aby w pętli wykorzystać zmienne łańcuchowe, znakowe, zmiennoprzecinkowe czy też nawet całe kontenery, tak jak to pokazano poniżej?
for (string s = ""; !s.Equals("aaaaa"); s+="a")
{
}
for (double d = 31; d > 18; d *= 0,87)
{
}
for (char ch = 'a'; ch!='z'; ch++)
{
}
for (Arraylist lst = new Arraylist(5); lst[4]==null; lst.Add(new Object()))
{
}
Albo pójdźmy nawet dalej, czy można teoretycznie stworzyć sobie całą klasę specjalnie na potrzeby pętli for i potem wykorzystywać jej instancje, tak jak poniżej?
public class Iterator
{
public Iterator(int k)
{
wartosc = 0;
koniec = k;
nadal = true;
}
public void zwieksz()
{
wartosc++;
if (wartosc > koniec) nadal = false;
}
public int wartosc;
public int koniec;
public bool nadal;
}
for (Iterator it = new Iterator(10); it.nadal; it.zwieksz())
{
}