LINQ体验(3)——C# 3.0新语言特性和改进(下篇)

上一篇我们介绍了C# 3.0新语言特性和改进上部分,这篇我们继续介绍剩下 的部分。

C# 3.0新语言特性和改进包括:

自动属性(Auto- Implemented Properties)

隐含类型局部变量(Local Variable Type Inference)

匿名类型(Anonymous Types)

对象与集合初始化器 (Object and Collection Initializers)

扩展方法(Extension Methods)

Lambda表达式和Lambda表达式树 (Lambda Expression and Lambda Expression Trees)

扩展方法(Extension Methods)

往往我们 需要对CLR类型进行一些操作,但苦于无法扩展CLR类型的方法,只能创建一些 helper方法,或者继承类。我们来修改上面的User类:

public class User
{
  public int Id { get; set; }
  public string Name { get; set; }
  public int Age { get; set; }
  public string Read()
  {
    return "Id:" + Id + "姓名:" + Name + "年龄:" + Age;
  }
}

然后调用

var user = new { Id = 1, Name = "YJingLee", Age = 22 };
var str = user.Read();

现在有了扩展方法就方便多了。

扩展方法允许 开发人员往一个现有的CLR类型的公开契约(contract)中添加新的方法,而不用 生成子类或者重新编译原来的类型。扩展方法有助于把今天动态语言中流行的对 duck typing的支持之灵活性,与强类型语言之性能和编译时验证融合起来。——引用Scott博文

扩展方法是可以通过使用实例方法语法调 用的静态方法。效果上,使得附加的方法扩展已存在类型和构造类型成为可能。他可以对现有类功能进行扩充,从而使该类型的实例具有更多的方法(功能)。

扩展方法允许我们在不改变源代码的情况下扩展(即添加不能修改)现 有类型中的实例方法。

时间: 2024-09-10 22:22:20

LINQ体验(3)——C# 3.0新语言特性和改进(下篇)的相关文章

LINQ体验(2)——C# 3.0新语言特性和改进(上篇)

在第一篇中,知道了Visual Studio 2008新特性,从这篇开始进入此系列的 第二部分--介绍C# 3.0新语言特性和改进. 总体来说, Visual Studio 2008和.NET 3.5是建立在.NET2.0核心的基础之上,.NET2.0核心 本身将不再变化(如果不了解.NET2.0的朋友,请参看MSDN或者一些经典的书籍 ),C# 3.0新语言特性在.NET2.0基础上进行了改进,这些改进的功能可以大大 简化我们编写程序.关于C# 3.0新语言特性在博客园里的很多朋友都介绍了,我

LINQ体验(1)——Visual Studio 2008新特性

一.写本系列的目的 我平时利用课余零碎时间来学习ASP.NET3.5.LINQ.Silverlight.ASP.NET 3.5 Extensions等新东西,通过笔记形式来记录自己所学的历程,也给大家一起 学习Visual Studio 2008 和 .NET 3.5提供一个平台,为保证此系列的完整性, 我打算先依次介绍一下C# 3.0新语言特性和改进,然后从一条一条LINQ语句分析 来贯穿LINQ的知识点.最后通过一个实例程序实战Linq to sql带来全新的编程 体验.此系列比较长,欢迎大

ES5.0 新版本的特性与改进

Elasticsearch 5.0 新版本的特性与改进 时间 2016-07-27 07:39:26  公众账号 原文  http://mp.weixin.qq.com/s?__biz=MzA5NzkxMzg1Nw==&mid=2653160245&idx=1&sn=7e9482ec410cc89cf40c0f21724dae32&scene=1&srcid=0727t9nOGxnSz5qJ8KZvcAri 主题 Elastic Search 本文是7月26日大数据

体验Visual C++ 2005的现代语言特性(5)

可靠的安全 在2002年,Bill Gates宣布进行的可信赖计算,已对微软公司开发的所有产品带来了深刻的影响.Windows操作系统的开发者花了数月的时间来进行安全方面的训练及代码重审,带来的结果就是,Windows Server 2003成了该公司有史以来发布的最安全的操作系统.Microsoft Office 2003也包含了许多的安全功能,像IRM(Information Rights Management).加强的宏安全.Outlook中阻止下载HTML等等.而Visual C++ 2

体验Visual C++ 2005的现代语言特性(2)

新的Interop 在Visual Studio .NET 2003的所有基于 .NET Framework的语言当中,Visual C++ 2005提供了最好的interop功能.它可不像是纸上谈兵,如今具有了足够的能力来实现真实世界中的场景,一个最好的例子就是把Quake II移植到 .NET Framework平台上,而Visual C++ 2005则更加扩展了这项功能. 在本地和托管世界中,.NET有四种主要的方法可进行interop.对COM的interop可使用RCW(Runtime

体验Visual C++ 2005的现代语言特性(1)

当年Visual Studio.NET 2003 C++编译器的面世,令无数C++语言爱好者都对此垂涎不已:它与ISO C++标准保持98%的一致--这比以前任何一个版本都更加接近,和一体化的语言支持特性,如局部模板特定化:同时也包括了增强的缓冲区安全检查和改进的编译器诊断功能.以往使用C#和Visual Basic.NET的开发者,通过简单的拖放操作,就能生成稳健的Windows窗体应用程序,如今,C++的开发者也加入了进来,而且,这个编译器还对Intel Pentium 4和AMD Athl

体验Visual C++ 2005的现代语言特性(4)

更好的代码优化 一个好的软件开发者总会想方设法提高软件的执行效率,编译器的编写者是一种特殊类型的开发者,不仅代码要执行效率高,而且由它们生成的代码也必须极有效率.因此,任何一个成功的编译器产品,优秀的后台优化是必不可少的.而在这方面,Visual C++ 2005脱颖而出. Visual Studio .NET 2002和Visual Studio .NET 2003在C++编译器中引入了一些非常好的优化方式,也花了很大气力改善本地代码的执行效率,加入了对Intel Pentium 4 CPU的

体验Visual C++ 2005的现代语言特性(3)

It Just Works 在Visual Studio .NET 2003,C++的interop技术叫做IJW或者"It Just Works",在新版本中,已换成了更贴切的"Interop技术".那它的工作原理是怎样的呢?对程序中的每一个本地方法,编译器同时生成一个托管和非托管进入点,它们中只有一个是真正方法的实现,另一个则是转发器,可进行相应的转换和必要的调度.托管进入点通常是真正方法的实现,除非代码不能解释为MSIL或开发者使用"#pragma

LINQ体验专题

LINQ体验(18)--LINQ to SQL语句之视图和继承支持 LINQ体验(17)--LINQ to SQL语句之动态查询 LINQ体验(16)--LINQ to SQL语句之DataContext LINQ体验(15)--LINQ to SQL语句之用户定义函数 LINQ体验(14)--LINQ to SQL语句之存储过程 LINQ体验(13)--LINQ to SQL语句之运算符转换和ADO.NET与LINQ to SQL LINQ体验(12)--LINQ to SQL语句之对象标识和