do... while
często nie da się zamienić na for
i tak jest również w tym wypadku. Domyślnie taki int
jest zerem, a skoro warunkiem jest a != 0
to taka pętla nawet się nie wykona, ponieważ for
najpierw sprawdza warunek. W przypadku do...while
ma się pewność, że wykona się co najmniej raz więc można np. zmusić użytkownika żeby wpisał coś do tego inta, co nie będzie zerem.
Jaką wartość ma a na początku?
Jeżeli nie ustawimy inaczej to będzie to zero. No chyba, że czymś zainicjalizujemy np. MinValue
. Wtedy warunek zostanie spełniony i pętla for
się wykona tylko takie podejście jest brzydkie. Od biedy można coś takiego zrobić:
int a = int.MinValue;
for (; a != 0; int.TryParse(Console.ReadLine(), out a))
{
// Operacje
}
Tylko czy to jest ładne? Tutaj naprawdę do...while
najbardziej się nadaje.
Convert.ToInt32
To również jest nieprawidłowe podejście. Wpisanie przez użytkownika do formatki wartości innej niż liczba nie jest sytuacją wyjątkową, a ta metoda wywali wyjątek jeżeli user się pomyli. Lepiej skorzystać z int.TryParse
i była o tym mowa już chyba pierdyliard razy. :-) Patrz sekcja 'Uwagi': https://msdn.microsoft.com/pl-pl/library/sf1aw27b(v=vs.110).aspx