Linq中怎么实现隐式类型化局部变量

本篇文章为大家展示了Linq中怎么实现隐式类型化局部变量,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

Linq隐式类型化局部变量

还有另一种语言功能被称为Linq隐式类型化局部变量(或简称为 var),它负责指示编译器推断局部变量的类型。例如:

var integer = 1;

在此例中,整数具有 int 类型。请务必明白,这仍然是强类型。在动态语言中,整数的类型可在以后更改。为说明这一点,以下代码不会成功编译:

var integer = 1;  integer = “hello”;

C# 编译器将报告第二行的错误,表明无法将字符串隐式转换为 int。在上述查询示例中,我们现在可以编写完整的赋值,如下所示:

  1. var locals = customers.Where(c => c.ZipCode == 91822).Select(c => new { 
    FullName = c.FirstName + “ “ +c.LastName, HomeAddress = c.Address });  

局部变量的类型最终成为 IEnumerable<?>,其中“?”是无法编写的类型的名称(因为它是匿名的)。

Linq隐式类型化局部变量只是:方法内部的局部变量。它们无法超出方法、属性、索引器或其他块的边界,因为该类型无法显式声明,而且“var”对于字段或参数类型而言是非法的。

事实证明,Linq隐式类型化局部变量在查询的环境之外非常便利。例如,它有助于简化复杂的通用实例化:

var customerListLookup = new Dictionary<string, List<Customer>>();

现在我们的查询取得了良好进展;我们已经接近理想的语法,而且我们是用通用语言功能来达成的。有趣的是,我们发现,随着越来越多的人使用过此语法,经常会出现允许投影超越方法边界的需求。如我们以前所看到的,这是可能的,只要从 Select 内部调用对象的构造函数来构建对象即可。

上述内容就是Linq中怎么实现隐式类型化局部变量,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。