《深入理解C# 3.x的新特性》博文系列汇总

简介:

较之C# 2.0, C# 3.x引入了一系列新的特性,为我们编程带来很大的便利,通过有效地利用这些新特性,我们可以编写出更加简洁、优雅的程序。不过这些新特性仅仅是编译器给我们耍的小花招:在编译的时候加入一些必要的Code,使这些在C# 2.0角度看略显“残缺”的Code变得“完整”,实际上最终生成的Assembly和在C# 2.0时代并没有本质的不同。为此,有些人对这些新特性不以为然,觉得仅仅是一些表面文章。但是我的观点是:既然这些特性能给我们带来便利,干嘛不用呢?

本系列的着重点并不是放在如果去应用这些新特性上(实际上使用这些特性是很简单的),而是更多地落在对这些特性的实现的介绍上面:编译器到底在编译的时候加了哪些额外的代码来完善这些略显“残缺”的代码。
[第1篇] Anonymous Type
Anonymous Type允许我们定义一个对象并初始化一组任意的属性列表,而这个对象对应的Type并不是预先定义的。比如:

   1: var v = new{ID = Guid.NewGuid(), Name= "Zhang San" };

 

[第2篇] Extension Method
通过Extension Method,我们可以不改变Type定义的前提下对其方法成员进行扩展:我们在另一个Type中定一个一个特性的Static 方法,使之作为这个Type的Extension Method,这样的方法可以象其它方法一样的方法进行调用。LINQ的Operator,比如Where,From,Order by等,都是通过这样的进行定义的。

 

[第3篇] Lambda Expression

Lambda Expression被广泛使用到LINQ中,其本质就是一个Delegate。在这部分中,我将介绍Lambda Expression是如何通过一个Delegate来实现的。

 

[第4篇] Automatically Impemented Property

有了Automatically Implemented Property,我们可以简化传统的private field + public property的属性定义方式,就像这样:

   1: public class Vector 
   2: {
   3:      public double X { get; set; }
   4:      public double Y { get; set; }
   5: }

 

[第5篇] Object Initializer & Collection Initializer

Object Initializer & Collection Initializer是我将对象的创建和初始化合二为一:通过Object Initializer使用一次调用创建一个对象和初始化其属性成员,通过Collection Initializer在创建Collection对象的时候同时初始化该Collection的初始成员: 

   1: Vector v = new Vector { X = 1, Y = 2 };          
   2: IList<string> list = new List<string> { "Zhang San", "Li Si", "Wang Wu" };

作者:蒋金楠
微信公众账号:大内老A
微博: www.weibo.com/artech
如果你想及时得到个人撰写文章以及著作的消息推送,或者想看看个人推荐的技术资料,可以扫描左边二维码(或者长按识别二维码)关注个人公众号(原来公众帐号 蒋金楠的自媒体将会停用)。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
相关文章
|
存储 Linux 虚拟化
Vsphere创建内容库Iso以及创建esxi虚拟机
Vcenter创建虚拟机 1.创建iso内容库 1)点击内容库
1954 0
Vsphere创建内容库Iso以及创建esxi虚拟机
|
11月前
|
人工智能 测试技术 人机交互
mini-GPT4o来了? 能看、能听、会说,还情感丰富的多模态全能助手EMOVA
【10月更文挑战第24天】EMOVA(EMotionally Omni-present Voice Assistant)是一项多模态全能助手的研究,旨在实现更自然、更智能的人机交互。该模型不仅能够处理图像、文本和语音,还具备丰富的情感表达能力。通过语义-声学解耦的语音标记器、全模态对齐和轻量级风格模块,EMOVA在视觉-语言和语音基准测试中表现出色,适用于智能助手、虚拟现实、教育和娱乐等领域。
177 3
|
网络协议 Linux 开发工具
Linkedin-SRE-中文教程-一-
Linkedin-SRE-中文教程-一-
|
JSON 安全 数据安全/隐私保护
实战指南:Python中OAuth与JWT的完美结合,构建安全认证防线
【9月更文挑战第9天】当今互联网应用的安全性至关重要,尤其在处理用户数据和个人隐私时。OAuth 和 JWT 是两种广泛使用的认证机制,各具优势。本文探讨如何在 Python 中结合 OAuth 和 JSON Web Tokens (JWT) 构建安全可靠的认证系统。OAuth 允许第三方应用获取有限访问权限而不暴露用户密码;JWT 则是一种轻量级数据交换格式,用于安全传输信息。结合使用这两种技术,可以在确保安全性的同时简化认证流程。
175 4
有哪些元宇宙的已知成功案例可以借鉴
**元宇宙成功案例摘要:** - 韩国国民银行开拓元宇宙金融,设立虚拟分行,探索数字资产服务。 - Meta&#39;s &quot;Horizon Worlds&quot;月活用户达30万,显示元宇宙在社交娱乐的潜力。 - Second Life作为早期在线世界,提供沉浸式体验,预示元宇宙可能性。 - 工商银行河北雄安分行创建虚拟分行,推动金融服务数字化。 - 首钢一高炉·SoReal乐园结合XR技术,展现元宇宙在文旅的创新应用。 - 中兴、天下秀、网易等企业通过元宇宙技术赋能社交、工业和服务平台。 这些案例揭示元宇宙在多领域广泛应用及广阔前景。
有哪些元宇宙的已知成功案例可以借鉴
|
监控 数据挖掘 数据安全/隐私保护
ERP系统中的员工薪酬与福利管理
【7月更文挑战第25天】 ERP系统中的员工薪酬与福利管理
473 2
|
存储 文件存储
DAS和NAS的性能对比?
【6月更文挑战第29天】DAS和NAS的性能对比?
396 4
PPT - 如何在PPT里面实现数字的随机抽奖?
PPT - 如何在PPT里面实现数字的随机抽奖?
849 0
PPT - 如何在PPT里面实现数字的随机抽奖?
|
Cloud Native 关系型数据库 分布式数据库
阿里云亮相数据库顶会VLDB 2023特邀主旨演讲:云数据库要像乐高积木一样好用
阿里云数据库再获国际顶会肯定!17篇论文入选VLDB刷新纪录
|
Ubuntu 定位技术 Python
numpy库报错has no attribute ‘_no_nep50_warning‘的解决
numpy库报错has no attribute ‘_no_nep50_warning‘的解决
341 1