Linq隐式类型化局部变量

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

在向大家详细介绍Linq隐式类型化局部变量之前,首先让大家了解下编译器推断局部变量的类型,然后全面介绍。

Linq隐式类型化局部变量

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

  1. var integer = 1

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

  1. var integer = 1;  
  2. 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隐式类型化局部变量在查询的环境之外非常便利。例如,它有助于简化复杂的通用实例化:

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

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

【编辑推荐】

  1. LINQ匿名类型分析
  2. LINQ Where子句介绍
  3. LINQ使用Where扩展方法
  4. 介绍LINQ一些强大功能
  5. Linq使用Select浅谈
责任编辑:佚名 来源: 腾讯科技
相关推荐

2009-09-17 13:05:38

Linq局部变量类型

2009-08-26 15:39:08

C#隐式类型局部变量

2010-01-20 10:27:07

VB.NET隐式类型局

2009-08-27 10:08:36

C#隐含类型局部变量

2009-08-14 11:34:26

Mono C#编译器

2009-08-26 16:37:07

C#迭代器局部变量

2010-01-21 10:57:12

VB.NET局部变量类

2018-05-14 09:15:24

Python变量函数

2010-01-05 14:04:53

.NET Framew

2009-10-12 14:13:00

VB.NET使用局部变

2009-12-15 10:48:54

Ruby局部变量

2020-11-11 21:26:48

函数变量

2024-05-29 08:49:22

Python全局变量局部变量

2015-01-07 14:41:32

Android全局变量局部变量

2021-09-28 07:12:09

函数内存

2010-03-15 09:32:56

Python函数

2017-02-08 12:28:37

Android变量总结

2009-09-22 17:21:24

线程局部变量

2023-09-24 23:40:54

Python变量

2010-10-14 09:34:34

JVM局部变量
点赞
收藏

51CTO技术栈公众号