共用方式為


HOW TO:在查詢運算式中使用隱含型別區域變數和陣列 (C# 程式設計手冊)

只要您想要編譯器判斷區域變數的型別,就可以使用隱含型別區域變數。 您必須使用隱含型別區域變數來儲存匿名型別,這些型別經常在查詢運算式中使用。 下列範例顯示在查詢中選擇性和必要的隱含型別區域變數用法。

隱含型別區域變數是使用 var 內容關鍵字宣告。 如需詳細資訊,請參閱隱含型別區域變數 (C# 程式設計手冊)隱含型別陣列 (C# 程式設計手冊)

範例

下列範例說明必須使用 var 關鍵字的常見情節:產生匿名型別序列的查詢運算式。 在此情節中,foreach 陳述式中的查詢變數和反覆運算變數必須使用 var 設為隱含型別,因為您未具備存取匿名型別之型別名稱的權限。 如需匿名型別的詳細資訊,請參閱匿名型別 (C# 程式設計手冊)

private static void QueryNames(char firstLetter)
{
    // Create the query. Use of var is required because
    // the query produces a sequence of anonymous types:
    // System.Collections.Generic.IEnumerable<????>.
    var studentQuery =
        from student in students
        where student.FirstName[0] == firstLetter
        select new { student.FirstName, student.LastName };

    // Execute the query and display the results.
    foreach (var anonType in studentQuery)
    {
        Console.WriteLine("First = {0}, Last = {1}", anonType.FirstName, anonType.LastName);
    }
}

下列範例會在類似的情況中使用 var 關鍵字,但是在這個情況中,var 是選用的。 因為 student.LastName 是字串,所以執行查詢會傳回字串序列。 因此,queryID 的型別可以宣告為 System.Collections.Generic.IEnumerable<string> 而不是 var。 使用 var 關鍵字的目的在於方便性。 在此範例中,foreach 陳述式中的反覆運算變數會明確設為字串型別,但是也可以使用 var 宣告。 因為反覆運算變數的型別不是匿名型別,所以 var 是選用的,並非必要。 請記住,var 本身不是型別,而是讓編譯器推斷及指派型別的指示。

// Variable queryID could be declared by using 
// System.Collections.Generic.IEnumerable<string>
// instead of var.
var queryID =
    from student in students
    where student.ID > 111
    select student.LastName;

// Variable str could be declared by using var instead of string.     
foreach (string str in queryID)
{
    Console.WriteLine("Last name: {0}", str);
}

請參閱

參考

擴充方法 (C# 程式設計手冊)

var (C# 參考)

概念

C# 程式設計手冊

LINQ 查詢運算式 (C# 程式設計手冊)

其他資源

LINQ (Language-Integrated Query)