Linq隐式类型化局部变量

在向大家详细介绍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, List>();

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

新闻标题:Linq隐式类型化局部变量
URL地址:http://www.shufengxianlan.com/qtweb/news49/306649.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联