如何:在查询表达式中使用隐式类型的局部变量和数组(C# 编程指南)

更新:2007 年 11 月

必须使用隐式类型的局部变量来存储匿名类型。还可以在希望编译器确定局部变量(即在方法范围中声明的变量)类型的任何其他情况下使用它们。下面的示例演示如何在这两种方案中使用隐式类型的变量。

隐式类型的局部变量是使用 var 上下文关键字声明的。有关更多信息,请参见隐式类型的局部变量(C# 编程指南)隐式类型的数组(C# 编程指南)

示例

下面的示例演示如何在以下需要 var 关键字的常见方案中使用该关键字:创建并执行一个产生匿名类型序列的查询表达式。请注意,在此方案中,不仅查询变量必须使用 var 进行隐式类型化,而且 foreach 语句中的迭代变量也必须如此。

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

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

本主题稍后部分的示例演示如何使用 var 关键字提供语法上的便利(即使它不是必需的)。为了演示此构造,只将查询变量进行隐式类型化。foreach 语句中的迭代变量被显式类型化,但也可以使用 var 声明它。请记住,var 本身不是类型,而是向编译器发出的一条用来推断和分配类型的指令。

var queryID =
    from student in students
    where student.ID > 111
    select student.LastName;

foreach (string str in queryID)
{
    Console.WriteLine(str);
}

请参见

概念

C# 编程指南

LINQ 查询表达式(C# 编程指南)

参考

扩展方法(C# 编程指南)

var(C# 参考)

其他资源

语言集成查询 (LINQ)