C# Schleife für if-Anweisung

okay danke erstmal für die vielen antworten :D
ich habe hier nochmal was zusammen gebastelt:

C#:
 public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string a = Ausgabe(true, "");
            textBox1.Text = a;
        }
        public static string Ausgabe(bool opt1, string ausg)
        {
            if (opt1)
            {
                ausg = "du hast dich für btn 1 entschieden.";
                return ausg;
            }
            return "error";
        }

ist das besser?
 
Ja. Zumindest schon mal ein Ansatz von Struktur.

Wenn ich dich fragen würde : "Was macht eine Ausgabe?" - würdest du bestimmt antworten "Etwas ausgeben". Entscheidungen sind dort, zumindest in deinem Fall nicht richtig angebracht. Ebenso, dass die Ausgabe dir einen Wert zurückgibt.

Unter der Methode Ausgabe würde ich die reine Ausgabe des Textes verstehen. Heißt Text als Parameter übergeben und irgendwie ausgeben - in deinem Fall textBox1.text = parameter.

Natürlich bräuchtest du in diesem simplen Beispiel nicht zwingend eine extra Ausgabe-Methode. texBox1.text = "" ist schon ziemlich kurz und gleicht einer Anweisung. Aber stellt dir mal vor, du gibst an mehreren Stellen etwas aus und dir fällt auf, dass du textBox1.text = "" mit Console.WriteLine("") austauschen möchtest. Also müsstest du die Zeile ggf. 100 Mal austauschen. Das Problem hättest du nicht, wenn du 100 Mal die Methode Ausgabe(text) aufrufst und dort bestimmt wie etwas ausgegeben wird - bei Anpassungen brauchst du nur ein Mal etwas zu ändern.


Jetzt würde ich noch versuchen, die Entscheidung ob KnopfA oder KnopfB gedrückt wurde auszulagern.


Aber es geht schon mal in die richtige Richtung :)
 
Zuletzt bearbeitet:
Zudem ist der Parameter ausg nutzlos. Ein bool für die Optionsmöglichkeit zu nutzen ist auch nicht optimal.
 
  • Gefällt mir
Reaktionen: SomeDifferent
warum ist ausg nutzlos??
Ergänzung ()

jetzt habe ich mir noch überlegt dass ich die eintscheidung was passieren soll (das was gerade Ausgabe heißt) eingabe oder so heißen soll und die ausgabe in einer extra methode die dann Ausgabe heißt stehen soll. aber ich komme nicht drauf wie ich das resultat der ersten methode zur zweiten übergeben soll
 
Zuletzt bearbeitet:
Anders herum gefragt: Was für einen Zweck erfüllt der Parameter ausg deiner Meinung nach?

Schreibe doch mal beide Methoden aus, dann kann man gucken, wie die verbunden werden sollen.
 
der variable wird der wert zugewiesen der returnt werden soll (dachte ich)
und das mit den methoden habe ich hinbekommen
 
MuneWrecker schrieb:
der variable wird der wert zugewiesen der returnt werden soll (dachte ich)
Klar, das ist das, was passiert. Ich meinte aber: Warum nimmst du dafür einen Parameter? Die sind für die Übergabe von Daten gedacht. Der Parameter wird bei dir aber gar nicht gebraucht. Also löschen.
 
ich habe es jetzt nochmal vereinfacht. es gibt jetzt nur noch die methode Ausgabe, die jenachdem was true ist den entsprechenden text ausgibt und im button steht nur noch "Ausgabe(false, true);" oder anders rum.
 
MuneWrecker schrieb:
im button steht nur noch "Ausgabe(false, true);" oder anders rum.
Es gibt nur (false, true) und (true, false)? Dann behaupte ich mal, ist auch hier ein Parameter zu viel.
 
C#:
public void Ausgabe(bool opt1, bool opt2)
        {
            if (opt1)
            {
                textBox1.Text += Environment.NewLine + "du hast dich für btn 1 entschieden.";
            }
            if (opt2)
            {
                textBox1.Text += Environment.NewLine + "du hast dich für btn 2 entschieden.";
            }
        }
Ergänzung ()

ich habe jetzt bool opt2 noch raus genommen. in den btns stehr nur true oder false und ich habe "else" verwendet
 
Hört sich gut an. :)
 

Ähnliche Themen

Zurück
Oben