Site logo
Site logo
Programmieren aus Leidenschaft
Programmieren aus Leidenschaft

Implizite Typisierung


Bisher habe Sie ihre Variablen immer durch Angabe eines konkreten Datentypen deklariert. Sie kennen int, double, string und viele mehr. Diese Schlüsselwörter bestimmen eindeutig den Datentyp. Neu in C# 3.0 ist die Deklarierung durch das Schlüsselwort 'var'. Auch hier wird die Variable fest und unveränderlich auf einen Datentyp festgelegt, allerdings erledigt dies der Compiler für Sie indem er den zu initialisierenden Wert analysiert.
var s = "Hallo Welt";
var i = 203;
Auch das Intellisense von Visual Studio 2008 erkennt schon den hier zu erzeugenden Datentyp. Während Ihnen für die Variable s die Methoden ToLower und ToUpper vorgeschlagen werden, fehlen diese bei der Variablen i. Auch die Tooltip-Hilfe zeigt eindeutig um welchen Datentyp es sich handelt. Implizite Typisierung funktioniert allerdings nur mit lokalen Variablen.

Verwechseln Sie var nicht mit dem Datentyp Variant wie Sie ihn vielleicht aus Visual Basic 6 kennen. Sie können einen einmal festgelegten Datentyp im Nachhinein nicht ändern! Auch ist eine implizite Typisierung nur möglich, wenn die Variable direkt initialisiert wird. Die zwei folgenden Beispiele sind nicht möglich.
var x;
x = 100;

var a = null;
a = "Hallo Welt";
Ähnlich wie bei einfachen Datentypen können auch Arrays auf diese Art erzeugt werden.
var numbers = new[] { 99,100,230,475 };
var names = new[] { "Müller", "Meier", "Huber" };
Sie sollten allerdings nicht versuchen bei der Initialisierung unterschiedliche Datentypen zu verwenden denn
var numbers = new[] { 99,100,"230",475 };
wird nicht funktionieren. Dennoch gibt es einen Unterschied: Im Vergleich zu einfachen Datentypen können Sie in Arrays auch einzelne Werte mit null initialisieren, solange ein eindeutiger Typ erkennbar bleibt:
var names = new[] { "Müller", null, "Huber" };
Implizite Typisierung eignet sich übrigens hervorragend für die Verwendung in foreach-Schleifen. Es funktioniert mit Arrays und sogar mit generischen Listen.
var names = new[] { "Müller", null, "Huber" };

foreach (var name in names)
{
MessageBox.Show(name);
}