VAR

强类型的隐式类型局部变量,就像用户声明了类型一样。与其他变量声明不同,编译器根据分配给它的值确定它所代表的变量的类型。

var i = 10; // implicitly typed, the compiler must determine what type of variable this is
int i = 10; // explicitly typed, the type of variable is explicitly stated to the compiler

// Note that these both represent the same type of variable (int) with the same value (10).

与其他类型的变量不同,具有此关键字的变量定义需要在声明时初始化。这是由于 var 关键字表示隐式类型变量。

var i;
i = 10;

// This code will not run as it is not initialized upon declaration.

变种的关键字,也可用于动态创建新的数据类型。这些新数据类型称为匿名类型。它们非常有用,因为它们允许用户定义一组属性,而不必首先显式声明任何类型的对象类型。

简单的匿名类型

var a = new { number = 1, text = "hi" };

返回匿名类型的 LINQ 查询

public class Dog
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public class DogWithBreed
{
    public Dog Dog { get; set; }
    public string BreedName  { get; set; }
}

public void GetDogsWithBreedNames()
{
    var db = new DogDataContext(ConnectString);
    var result = from d in db.Dogs
             join b in db.Breeds on d.BreedId equals b.BreedId
             select new 
                    {
                        DogName = d.Name,
                        BreedName = b.BreedName
                    };

    DoStuff(result);
}

你可以在 foreach 语句中使用 var 关键字

public bool hasItemInList(List<String> list, string stringToSearch)
{
    foreach(var item in list)
    {
        if( ( (string)item ).equals(stringToSearch) )
            return true;
    }

    return false;
}