C# Frage

Status
Für weitere Antworten geschlossen.

Gary12345

Ensign
Registriert
Sep. 2012
Beiträge
246
Hallo,

schon erste Videos angeschaut und habe fast alles verstanden. String , integer war mir schon vorher klar.

Code:
 private void button1_Click(object sender, EventArgs e)
        {

            int eingabeZahl = 1;
            int ergebnis = 1;
            try
            {
                eingabeZahl = Convert.ToInt16(textBox1.Text);
                ergebnis = eingabeZahl * 2;
                label1.Text = ergebnis.ToString();
            }
            catch { label1.Text = "Sie haben einen Fehler gemacht"; }
             
        }

int eingabeZahl = 1;
int ergebnis = 1;

Im Tutorial schreibt man 0 , 1 zeigt bei mir keinen Unterschied. Warum wird da eine 0 verwendet. Fängt man immer mit 0 an, oder wie? Und was bedeuten diese Zahlen eigentlich?

LG
 
Das sind beides Werte, die anfangs zugewiesen werden, bevor der try-Block ausgeführt wird. Dort werden beide (falls möglich) überschrieben.

Normalerweise initialisiert man solche Variablen aber mit 0 (oder gar nicht).
 
Lokale Variablen müssen zumindest in Java initialisiert werden. Das dürfte in C# gleich sein.
Code:
	public static void main(String[] args) {
		int i;

		System.out.println(i);
	}
Klassenattribute werden automatisch initialisiert (0 für int).
Code:
	static int i;

	public static void main(String[] args) {

		System.out.println(i);
	}
Funktioniert also.

Um nochmal auf dein Beispiel einzugehen. Ich vermute Convert.ToInt16(textBox1.Text) kann fehlschlagen. Dadurch würden beide Variablen niemals initialisiert.
 
Man muss es nicht so machen, wie in dem Beispiel. Wenn die Variablen später (d.h. nach dem Block) nicht mehr verwendet werden, ist es gängige Praxis sie erst dann zu definieren, wenn sie verwendet werden (hier im try/catch-Block). Also:

PHP:
private void button1_Click(object sender, EventArgs e) 
{   
    try
    {
        int eingabeZahl = Convert.ToInt16(textBox1.Text);
        int ergebnis = eingabeZahl * 2;

        label1.Text = ergebnis.ToString();
    }
    catch
    {
        label1.Text = "Sie haben einen Fehler gemacht";
    }
}

Die Fehlerbehandlung ist natürlich ungenügend in dem Beispiel. Aber es ist ja auch nur ein Beispiel.

Die zugewiesenen Werte sind einfach selbstgewählte Standardwerte. Diese werden in dem Fall ohnehin überschrieben, sind also nicht von Belang. Es kommt auf den Einzelfall an, ob es beachtlich ist, was anfangs zugewiesen wird.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben