var (C#-Referenz)var (C# Reference)

Ab Visual Studio C# 3.0 können Variablen, die im Methodenbereich deklariert wurden, den impliziten „Typ“ var haben.Beginning in Visual C# 3.0, variables that are declared at method scope can have an implicit "type" var. Eine implizit typisierte lokale Variable ist stark typisiert, als hätten Sie den Typ selbst deklariert. Tatsächlich legt der Compiler den Typ fest.An implicitly typed local variable is strongly typed just as if you had declared the type yourself, but the compiler determines the type. Die folgenden beiden i-Aktivitäten sind funktional äquivalent:The following two declarations of i are functionally equivalent:

var i = 10; // Implicitly typed. 
int i = 10; // Explicitly typed. 

Weitere Informationen finden Sie unter Implizit typisierte lokale Variablen und Type relationships in LINQ query operations (Typbeziehungen in LINQ-Abfragevorgängen).For more information, see Implicitly Typed Local Variables and Type Relationships in LINQ Query Operations.

BeispielExample

Im folgenden Beispiel werden zwei Abfrageausdrücke gezeigt.The following example shows two query expressions. Im ersten Ausdruck in das Verwenden von var erlaubt aber nicht erforderlich, da der Typ des Abfrageergebnisses explizit als IEnumerable<string> angegeben werden kann.In the first expression, the use of var is permitted but is not required, because the type of the query result can be stated explicitly as an IEnumerable<string>. Im zweiten Ausdruck ermöglicht var, dass das Ergebnis eine Auflistung von anonymen Typen ist und dass auf die Namen dieser Typen nicht zugegriffen werden kann. Nur der Compiler kann darauf zugreifen.However, in the second expression, var allows the result to be a collection of anonymous types, and the name of that type is not accessible except to the compiler itself. Durch die Verwendung von var wird die Voraussetzung beseitigt, eine neue Klasse für das Ergebnis erstellen zu müssen.Use of var eliminates the requirement to create a new class for the result. Beachten Sie, dass die foreach-Iterationsvariable item im zweiten Beispiel auch implizit typisiert sein muss.Note that in Example #2, the foreach iteration variable item must also be implicitly typed.

// Example #1: var is optional because
// the select clause specifies a string
string[] words = { "apple", "strawberry", "grape", "peach", "banana" };
var wordQuery = from word in words
                where word[0] == 'g'
                select word;

// Because each element in the sequence is a string, 
// not an anonymous type, var is optional here also.
foreach (string s in wordQuery)
{
    Console.WriteLine(s);
}

// Example #2: var is required when
// the select clause specifies an anonymous type
var custQuery = from cust in customers
                where cust.City == "Phoenix"
                select new { cust.Name, cust.Phone };

// var must be used because each item 
// in the sequence is an anonymous type
foreach (var item in custQuery)
{
    Console.WriteLine("Name={0}, Phone={1}", item.Name, item.Phone);
}

Siehe auchSee Also

C#-ReferenzC# Reference
C#-ProgrammierhandbuchC# Programming Guide
Implizit typisierte lokale VariablenImplicitly Typed Local Variables