c#3.0新特性(一):var关键字、自动属性、初始化器和扩展方法

简介:
前言:上周闲暇时在公司看了Anders Hejlsberg在PDC08上讲的“ The Future of C#”。下面是视频里的截图:

笔者接触c#(主要是2.0)不足两年时间,而且c#2.0很多东西都还没学或者没有学懂。虽然在网上也曾经看过几篇介绍c#3.0的博文,可是看过就没有再使用过,几乎已经真的“忘到姥姥家了”。看到c#变化的如此之快,更加感到恐惧和不安。既然抱了ms的大腿,学习要是没有自发性和积极性,“落后”是早晚的事啊。
现在c#已经有十年历史,最高版本已经到4.0了。在视频里安德斯展现了c#惊人的生产力,对照现在自己的编程水平,恍如隔世,惭愧啊。
言归正传。下面整理下这几天自己的自学笔记,所有代码都在本人的机器上测试通过,本人菜鸟,如有讹误,务请留意。
一、var关键字
如果你有javascript的开发经验,var关键字你一定不会陌生。和js中的var关键字类似,在C#3.0中,var关键字用来定义隐式化的局部变量,看个例子先:
Code
其实在使用var关键字时, 编译器会根据初始化变量的变量值来推断变量的数据类型,所以var关键字在本质上并没有改变什么。只不过比直接写强类型的数据类型看起来更"灵活"一些,这也就是解释型语言曾经的“优势”。
接着介绍常用的四个新特性,贴代码为主,多操作就熟练了。
二、自动属性(Automatic Properties)
Code
三、对象初始化器(Object Initializers)
Code

四、集合初始化器(Collection Initializers)

Code

五、扩展方法(Extension Method)

"扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。"通常,建议您只在不得已的情况下才实现扩展方法,并谨慎地实现。只要有可能,必须扩展现有类型的客户端代码都应该通过创建从现有类型派生的新类型来达到这一目的"。
如果你有javascript的开发经验,相信对js的原型(prototype)不会陌生,这里的扩展方法其实类似于js的原型方式。举例来说:
Q:去掉字符串两端的特殊字符"-"
1、javascript实现方式

复制代码

//  去掉字符串两端的特殊字符"-"
String.prototype.TrimMinus  =   function () {
    
return   this .replace( / (^[-]+)|([-]+$) / g,  "" );
}
var  strTest = "- jeff wong- " ;
alert(strTest.TrimMinus()); 
// 调用
复制代码

 

2、看下c#扩展方法如何发挥:

Code

ps:上述js的原型扩展和c#的扩展方法功能是一样的,就是string这个类添加一个扩展方法,使得所有这个类的实例化对象能够直接使用这个方法.







本文转自JeffWong博客园博客,原文链接:http://www.cnblogs.com/jeffwongishandsome/archive/2009/05/20/1457323.html,如需转载请自行联系原作者

目录
相关文章
|
3月前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
134 12
|
2月前
|
编译器 C# C++
C# 特性(Attribute)
C# 特性(Attribute)
28 0
|
4月前
|
编译器 C# 开发者
C# 9.0 新特性解析
C# 9.0 是微软在2020年11月随.NET 5.0发布的重大更新,带来了一系列新特性和改进,如记录类型、初始化器增强、顶级语句、模式匹配增强、目标类型的新表达式、属性模式和空值处理操作符等,旨在提升开发效率和代码可读性。本文将详细介绍这些新特性,并提供代码示例和常见问题解答。
85 7
C# 9.0 新特性解析
|
6月前
|
编译器 C# Android开发
震惊!Uno Platform 与 C# 最新特性的完美融合,你不可不知的跨平台开发秘籍!
Uno Platform 是一个强大的跨平台应用开发框架,支持 Windows、macOS、iOS、Android 和 WebAssembly,采用 C# 和 XAML 进行编程。C# 作为其核心语言,持续推出新特性,如可空引用类型、异步流、记录类型和顶级语句等,极大地提升了开发效率。要在 Uno Platform 中使用最新 C# 特性,需确保开发环境支持相应版本,并正确配置编译器选项。通过示例展示了如何在 Uno Platform 中应用可空引用类型、异步流、记录类型及顶级语句等功能,帮助开发者更好地构建高效、优质的跨平台应用。
318 59
|
4月前
|
C# 开发者
C# 10.0 新特性解析
C# 10.0 在性能、可读性和开发效率方面进行了多项增强。本文介绍了文件范围的命名空间、记录结构体、只读结构体、局部函数的递归优化、改进的模式匹配和 lambda 表达式等新特性,并通过代码示例帮助理解这些特性。
74 2
|
5月前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
64 1
|
5月前
|
开发框架 Cloud Native .NET
10 个 C# 关键字和功能
10 个 C# 关键字和功能
84 8
|
6月前
|
安全 C# 索引
C#一分钟浅谈:属性与索引器的定义
本文深入浅出地介绍了C#编程中的属性和索引器。属性让字段更安全,通过访问器方法在读写时执行额外操作,如验证数据有效性;索引器则赋予类数组般的访问方式,支持基于索引的数据访问模式。文章通过示例代码展示了如何定义及使用这两种特性,并提供了常见问题及其解决方案,帮助读者写出更健壮、易维护的代码。希望读者能从中学习到如何有效利用属性和索引器增强C#类的功能性。
141 12
|
4月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
71 3
|
4月前
|
设计模式 C# 图形学
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
149 4