Variable

Aus Das Sopra Wiki
Wechseln zu: Navigation, Suche
Variablen müssen vor ihrer Verwendung in C# wie in vielen anderen Sprachen auch zunächst deklariert werden. Jede Variable besitzt ihren eigenen Datentyp, der ihr bei der Deklaration zugewiesen wird. Im Allgemeinen kann man zwischen drei Typen von Variablen unterscheiden:
  • Lokale Variablen werden innerhalb von Methoden verwendet. Sie sind so lange gültig, wie der Block, in dem sie deklariert wurden, abgearbeitet wird. Danach werden sie aus dem Speicher entfernt. Auch Parameter von Methoden werden - bis auf Ausnahmefälle wie out- oder ref-Parameter - als lokale Variablen angesehen.
  • Instanzvariablen sind Bestandteil einer Klasse. Ihre Lebensdauer entspricht der Lebensdauer des Objektes, in dem sie definiert wurden. Sie werden häufig auch als Felder einer Klasse bzw. eines Objektes bezeichnet.
  • Klassenvariablen sind ebenfalls Bestandteil einer Klasse, allerdings nicht auf Instanz- bzw. Objektebene, sondern auf Klassenebene. Ihre Lebensdauer entspricht der des Programms, in dem die Klasse definiert wurde. Klassenvariablen existieren jeweils nur einmal im Bezug auf eine Klasse, nicht für jedes Objekt. Sie werden häufig als statische Variablen oder statische Felder bezeichnet.


Deklaration

In C# werden Variablen deklariert, indem zunächst ihr Typ und dann ihr Bezeichner angegeben wird:

int a;            // Deklariert die Variable a vom Typ int
System.Int32 b;   // Deklariert die Variable b vom gleichen Typ wie a, also int

An welcher Stelle eine Variable innerhalb eines Bereiches deklariert wird, ist unerheblich. Im Gegensatz zu anderen Sprachen, wie Delphi, in denen alle Variablen zu Beginn einer Methode deklariert werden müssen, kann in C# an beliebiger Stelle innerhalb einer Methode eine Variablendeklaration erfolgen. Wichtig ist nur, dass eine Deklaration erfolgt, bevor die Variable verwendet wird. Damit auf eine Variable zugegriffen werden kann, muss diese vor ihrem Zugriff außerdem noch initialisiert werden. Bei Wertetypen geschieht dies durch die Zuweisung eines Wertes. Lokal definierte Werte- und Referenztypen müssen instantiiert werden. Im globalen Kontext erhalten alle Referenztypen standardmäßig den Wert null, Wertetypen erhalten automatisch den Default-Wert des jeweiligen Typs.

// Deklaration und Initialisierung der Integer-Variable a
int a = 13;

// Deklaration und Initialisierung des Strings s
string s = "Hallo";

// Deklaration und Instantiierung des ComboBox-Objektes box
System.Windows.Forms.ComboBox box = new System.Windows.Forms.Combobox();

Bezeichner

Bezeichner, oder Namen einer Variablen identifizieren sie eindeutig und erlauben den Zugriff auf die Variable. Ein Bezeichner muss in C# mit einem Unterstrich (_) oder einem Buchstaben beginnen. Ziffern sind nur innerhalb des Namens erlaubt. Ein Variablenname darf ebenfalls keine Leerzeichen enthalten. Aufgrund der Unicode-Kompatibilität von C# und .NET können auch Sonderzeichen in Variablenbezeichnern verwendet werden. Davon wird allerdings abgeraten:

int _myValue;          // Korrekte Deklaration
double 1Wert;          // Fehler: Der Bezeichner der Variable beginnt mit einer Ziffer
double Wert1;          // Korrekte Deklaration
string Währung;        // Korrekte Deklaration, da Unicode-Zeichen unterstützt werden
int ein Wert;          // Fehler: Der Bezeichner beinhaltet ein Leerzeichen
int noch_ein_Wert;     // Korrekte Deklaration


Gültigkeitsbereich

Wie bereits erwähnt sind Variablen nur innerhalb des Blocks, in dem sie deklariert wurden, gültig. Das folgende Beispiel soll dies veranschaulichen:

class Class1
{
   static void Main(string[] args)
   {
      int i = 5;                   // i ist deklariert und initialisiert
      for (int u = 0; u < 10; u++)
      {
         i = i + u;
         Console.WriteLine(i);
      }
      Console.WriteLine(u);        // Fehler: u ist hier nicht mehr bekannt

      Console.ReadLine();
   }
}

Konstanten

Konstanten werden mit Hilfe des Schlüsselwortes const deklariert. Konstante Variablen können ihren Wert nicht mehr ändern. Sie müssen bereits bei der Deklaration initialisiert werden:

const int speedOfLight = 299792458;