English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# implizite Variablen (var)

In C# müssen Variablen mit einem Datentyp deklariert werden. Diese werden als explizit typisierte Variablen bezeichnet.

int i = 100;// Explizite Variablen

C#3.0 führte den Schlüsselwort var ein, um Variablen auf Methodenebene zu deklarieren, ohne den Datentyp explizit anzugeben.                    

var j =  100; // Implizit typisierte lokale Variablen

Der Kompilator leitet den Typ aus dem Ausdruck auf der rechten Seite des =-Operators ab. Oben wird var als int kompiliert.

Die Typen werden aus den Ausdrücken abgeleitet.

int i = 10;
var j = i + 1; // Kompiliert als int

var kann verwendet werden, um beliebige eingebaute Datentypen, benutzerdefinierte Typen oder anonyme Typen zu deklarieren. Der folgende Beispiel zeigt, wie der C#-Kompilator den Typ basierend auf diesem Wert ableitet:        

static void Main(string[] args)
{
    var i =  10;
    Console.WriteLine("Type of i is {0}", i.GetType());
    var str = "Hello World!!";
    Console.WriteLine("Type of str is {0}", str.GetType());
    var dbl =  100.50d;
    Console.WriteLine("Type of dbl is {0}", dbl.GetType());
    var isValid = true;
    Console.WriteLine("Type of isValid is {0}", isValid.GetType());
    var ano = new { name = "Steve" };
    Console.WriteLine("Type of ano is {0}", ano.GetType());
    var arr = new[] { 1, 10, 20, 30 };
    Console.WriteLine("Type of arr is {0}", arr.GetType());
    var file = new FileInfo("MyFile");
    Console.WriteLine("Type of file is {0}", file.GetType());
}

Variablen des impliziten Typs müssen bei der Deklaration initialisiert werden; andernfalls gibt der C#-Kompilierer den Fehler: Variablen des impliziten Typs müssen initialisiert werden.

var i; // Kompilierungsfehler: Variablen des impliziten Typs müssen initialisiert werden
i =  100;

var erlaubt keine mehrfache Deklaration von Variablen in einer einzigen Anweisung.

var i =  100, j =  200, k =  300; // Fehler: Variablen der var-Syntax können nicht in einer einzigen Anweisung deklariert werden//Nachfolgendes ist auch gültigvar i =  100; 
var j =  200; 
var k =  300;

var kann nicht für Funktionsparameter verwendet werden.

void Display(var param) //Kompilierungsfehler
{
    Console.Write(param);
}

var kann in for- und foreach-Schleifen verwendet werden.

for(var i = 0; i < 10; i++)
{     Console.WriteLine(i);
}

var kann auch mit LINQ-Abfragen verwendet werden.

// Zeichenkettenkolektion
IList<string> stringList = new List<string>() { 
    "C# Tutorials",
    "VB.NET Tutorials",
    "Learn C++",
    "MVC Tutorials",
    "Java" 
};
// LINQ-Abfrage-Syntax
var result = from s in stringList
            where s.Contains("Tutorials") 
            select s;