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,如需转载请自行联系原作者

目录
相关文章
|
1月前
|
C#
C#学习相关系列之数据类型类的三大特性(二)
C#学习相关系列之数据类型类的三大特性(二)
|
1月前
|
C#
30.C# 关键字 this初步学习
30.C# 关键字 this初步学习
15 1
|
1月前
|
C#
28.c#关键字base初步学习
28.c#关键字base初步学习
11 0
|
1月前
|
C#
27.c#关键字sealed修饰类
27.c#关键字sealed修饰类
12 0
|
2月前
|
SQL 开发框架 .NET
EntityFramework数据持久化复习资料3、C#拓展方法与yield关键字使用
EntityFramework数据持久化复习资料3、C#拓展方法与yield关键字使用
22 0
|
3月前
|
编译器 C# 开发者
C# 11.0中的新特性:覆盖默认接口方法
C# 11.0进一步增强了接口的灵活性,引入了覆盖默认接口方法的能力。这一新特性允许类在实现接口时,不仅可以提供接口中未实现的方法的具体实现,还可以覆盖接口中定义的默认方法实现。本文将详细介绍C# 11.0中接口默认方法覆盖的工作原理、使用场景及其对现有代码的影响,帮助开发者更好地理解和应用这一新功能。
|
3月前
|
存储 安全 编译器
C# 11.0中的泛型属性:类型安全的新篇章
【1月更文挑战第23天】C# 11.0引入了泛型属性的概念,这一新特性为开发者提供了更高级别的类型安全性和灵活性。本文将详细探讨C# 11.0中泛型属性的工作原理、使用场景以及它们对现有编程模式的改进。通过深入了解泛型属性,开发者将能够编写更加健壮、可维护的代码,并充分利用C#语言的最新发展。
|
1月前
|
Java C#
C#学习相关系列之多线程(七)---Task的相关属性用法
C#学习相关系列之多线程(七)---Task的相关属性用法
|
1月前
|
自然语言处理 C# 数据安全/隐私保护
50.c#:string类初始化
50.c#:string类初始化
18 1
|
1月前
|
存储 Java C++
31.C#:关键字static
31.C#:关键字static
15 1