Autor Beitrag
tripfish
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 10.07.08 12:17 
Hallo,

ich stehe ganz am Anfang der C#-Programmierung. Daher ist das sicher eine Anfängerfrage.

Wie kann ich eine Variable die in einer if-Anweisung initialisiert wurde, außerhalb mit dem gleichen Wert weiter verwenden?

Beispiel:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
...
int var1;
int var2;

if (Bedingung)
{
var1 = 12;
var2 = 33;
}

Console.WriteLine("Ausgabe: {0}, {1}", var1, var2);


Da der Wert der Variable lokal zugewiesen wurde kann ich ihn außerhalb der if-Anweisung nicht mehr nutzen. Wie kann man sowas realisieren?

Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
Moderiert von user profile iconChristian S.: Topic aus Basistechnologien verschoben am Do 10.07.2008 um 12:20
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 10.07.08 12:21 
Hallo und :welcome:!

Natürlich kannst Du den Wert nutzen! Nur wenn eine Variable innerhalb der if-Awneisung deklariert wird, ist sie außer außerhalb nicht nutzbar.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 10.07.08 12:26 
Hallo,

Du hast die Fehlermeldung des Compilers vermutlich falsch verstanden: Durch "int var1" wurde die Variable deklariert; sie ist also innerhalb des gesamten Blocks, zu dem diese Zeile gehört, gültig. Du hast aber den Fehler gemacht, nur in einem Zweig der if-Abfrage einen Wert zuzuweisen; im (nicht benutzten) else-Zweig wird kein Wert zugewiesen. Es gibt deshalb eine Verzweigung (nämlich else), bei der var1 undefiniert bleibt.

Lösung:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
...
int var1 = 0;
int var2 = 0;

if (Bedingung)
{
  var1 = 12;
  var2 = 33;
}

Console.WriteLine("Ausgabe: {0}, {1}", var1, var2);

Merke: Du musst genau auf den Gültigkeitsbereich von Variablen achten: innerhalb eines Blocks "{...}", innerhalb einer Methode, innerhalb einer Klasse.

Gruß Jürgen

PS. Sorry, habe Christians Antwort übersehen, während ich geschrieben habe.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 10.07.08 12:29 
user profile iconJüTho hat folgendes geschrieben:
Sorry, habe Christians Antwort übersehen, während ich geschrieben habe.
Da wird doch einer nicht etwa kein AJAX aktiviert haben ;-)

Aber in dem Fall war's ja gut, denn an die Meldung wegen der nicht gesetzten Variable habe ich nicht gedacht :-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
tripfish Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Do 10.07.08 12:32 
Super, vielen Dank für die schnellen Antworten.
Das hat mein Problem gelöst! :)