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;
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.
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";
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" };
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);
}
foreach (var name in names)
{
MessageBox.Show(name);
}