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;
}