Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Warum while (true)?
K.I.T.T.
myCSharp.de - Member



Dabei seit:
Beiträge: 42

Themenstarter:

Warum while (true)?

beantworten | zitieren | melden

Moin,
ich hab aus meinem Buch einen Code abgeschrieben und habe ja auch alles verstanden, ausser einer Sache, es ging da grad um die while-Schleife. Also hier der Codeabschnitt:


while (true) 
			{ 
				Console.Write("Guthaben eingeben: "); 
				string sGuthaben = Console.ReadLine(); 
				dGuthaben = Convert.ToDecimal(sGuthaben); 
				if (dGuthaben ≥ 0) 
				{ 
					break; 
				} 

				Console.WriteLine("Nö, keine negativen Werte..."); 
				Console.WriteLine("NOCHMAL!!!"); 
				Console.WriteLine(); 
			} 

Was das bedeutet ist ja klar: Wenn das Guthaben größer oder gleich Null ist, dann wird die while-Schleife mit break verlassen, ansonsten Fehlermeldung und Guthaben nochmal eingeben.

Meine Frage ist jetzt, warum muss ich while (true) eingeben? Das verstehe ich nicht.

Gruß K.I.T.T.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo K.I.T.T.,

bitte von alleine CodeTags verwenden. [Hinweis] Wie poste ich richtig? Punkt 6.

Da die Schleifen-Bedingung in der Mitte des Schleifenrumpfs geprüft werden soll, setzt man while (true) ein. Die while-Schleife wird dadurch immer durchlaufen bis sie mit break verlassen wird.

herbivore
private Nachricht | Beiträge des Benutzers
LukeGee
myCSharp.de - Member

Avatar #avatar-2560.gif


Dabei seit:
Beiträge: 409
Herkunft: Wehr/BW

beantworten | zitieren | melden

Ja,

while (true)
ist eine Endlosschleife.
private Nachricht | Beiträge des Benutzers
hauptmann
myCSharp.de - Member



Dabei seit:
Beiträge: 704
Herkunft: Österreich/Kärnten

beantworten | zitieren | melden

Ist übrigens ziemlich unschön ... aber nur so nebenbei *g*

Lieber eine rekursive Main() Methode ...
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo hauptmann,

ich widerspreche dir ungerne, muss es aber trotzdem tun. Hier Rekursion zu verwenden wäre völlig verfehlt. Für eine rekursive Main() Methode kann ich mir ohnehin nur in sehr weniger Fällen als sinnvolle Option vorstellen.

Ich finde middle-checked-loops außerdem oft sehr elegant. Schade ist eigentlich nur, dass es dafür kein besonderes Schlüsselwort gibt.

herbivore
private Nachricht | Beiträge des Benutzers
el Diablo
myCSharp.de - Member

Avatar #avatar-2307.gif


Dabei seit:
Beiträge: 31
Herkunft: Deutschland

beantworten | zitieren | melden

Zitat
Original von K.I.T.T.


Meine Frage ist jetzt, warum muss ich while (true) eingeben? Das verstehe ich nicht.

Gruß K.I.T.T.

Eine while - Schleife testet immer auf wahr oder falsch (true oder false).
Solange der Wert in dem Schleifenkopf true ist, wird der gesamte Inhalt des Blockes wiederholt. Das endet, wenn man den Wert auf false setzt - oder wie in diesem Fall - die Schleife mit break verlässt.
Führe einen Krieg gegen Dummheit und Ignoranz - du hast ihn verloren, bevor er beginnt.
private Nachricht | Beiträge des Benutzers