如何:在查询表达式中使用隐式类型的局部变量和数组(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);
}