1. 隐式类型
以前这样声明变量:
string str = "Hello World";
现在可以写成:
var str = "Hello World";
str仍然被认为是string类型,因为C#编译器根据初始值可以判断出来。所以这种写法要求在声明变量时必须提供初始值。下面是数组的写法:
var points = new[] {new Point(1, 2), new Point(3, 4)};
注意数组的成员类型必须相同,否则编译不会通过。
2. 自动属性
对于简单的对象属性,不需要为get和set写无聊的代码了:
public class Contact {
public string Name { get; set; }
public int YearOfBirth { get; set; }
}
当然也无须声明私有成员变量,所有这些事情都交给C#3.0去做吧。
3. 对象初始化器
当创建对象时,需要为对象的成员提供初始值,传统的做法是在实例化时通过构造函数传递初始值或者在实例化后为每个属性单独设置值。有了C#3.0,可以这样做了:
Contact c1 = new Contact { Name = "John", YearOfBirth = 1980 };
上面代码相当于是实例化后给两个属性赋值,如果想在实例化的时候给构造函数传递参数,那么可以这样写:
Contact c1 = new Contact("Obama"){ YearOfBirth = 1980 };
4. 集合初始化器
不用调用Add方法了:
List Contacts = new List(){
new Contact { Name = "John", YearOfBirth = 1980 },
new Contact { Name = "John", YearOfBirth = 1980 },
new Contact { Name = "John", YearOfBirth = 1980 }
}
5. 匿名类型
创建一个连类型都不知道的对象,有意思:
var contact1 = new
{
Id = "54321",
Name = "Test",
Email = Test@test.com
};
注:匿名类型的对象是不可变的,所有的属性都是只读的。
还可以这样写:
var Name = "Test";
var Email = "Test@test.com";
var contact1 = new { Id = "54321", Name, Email };
这里的变量名传到里面成为了匿名对象的属性名。直接传直接量是不允许的,必须使用标识符。
6. Lambda表达式
这是对委托的进一步简化。在C#1.x时代,创建委托对象要这样写:
button1.Click += new EventHandler(button1_Click);
…
private void button1_Click(object sender, EventArgs e){…}
在C#2.0可以使用匿名方法进行简化:
button1.Click += delegate { … };
C#3.0提供了更简单的写法,即使用Lambda表达式,写法如下:
button1.Click += (sender, args)=> …;
Lamdba表达式的格式很奇怪:
参数=>语句
在上例中,sender和args是Lambda表达式的参数,参数的类型是不强制的,可以省略,它可以基于上下文自动推测出来。
分享到:
相关推荐
C# 3.0 3.5 新特性 总结 最新在网上好不容易搜集的资料。
介绍C# 3.0新语言特性和改进内容,帮助开发人员更了解VS2008中的C#语言
C#3.0,在短短几年中,微软就对C#进行了两次大的升级,为C#加入了许多新的特性,从而使C#变得更加强大也更加现代了
c# 3.0 新特性(en)
VS2008下c#3.0新特性之var源码
相信能给大家一个崭新的认识,深刻的学习c#语言。
C# 3.0新语言特性在.NET2.0基础上进行了改进,这些改进的功能可以大大简化我们编写程序。
学习设计模式的好书。 本书为那些充满奥秘的设计模式提供了有效的C#3.0实现。” 如果想加速.NET应用程序的开发,你...本书条理清晰地介绍了经典的面向对象设计模式,并解释了怎样运用最新的C#3.0语言特性来编写它们。
文档全面介绍了C#3.0的语言特性。以及和2.0的不同和更新的结构 内容。和大家分享。
C#3.0在此基础上进行一定改进,方便我们编写程序,并把主要的精力放在业务逻辑的实现上,减少重复工作,例如新特性中自动属性把字段的封装更加集成化了,把更多的重复工作交给了编译器来做,首先介绍下.NET框架版本...
视频_c#3.0,VB9.0 新特性介绍
C# 3.0 入门系列 主要介绍C#3.0新增特性dlinq的学习
本文档介绍了C#3.0的新特性以及这些新特性与LINQ的关系。内容为英文
vs2008视频教程 vs2008视频教程
webcast关于C#3.0新特性的视频教程及相应的PDF,包括 Linq ,Lambda 等新技术
先依次介绍一下C# 3.0新语言特性和改进,然后从一条一条LINQ语句分析来贯穿LINQ的知识点。最后通过一个实例程序实战Linq to sql带来全新的编程体验。
这是微软提供的最新的C# 3.0例子,其中囊括了C#3.0的新特性,及LINQ的使用。对学习C#3.0的朋友们很有参考价值,值得下载!
Visual Studio 2008开发新特性系列课程(2):C#3.0与VB9.0的新特性介绍
C#3.0(C#Orcas——魔鬼)在C#2.0的基础上引入了很多语言扩展,用以支持高级别的函数式风格类库的创建和使用。这些扩展使得结构性API构造具有与其他领域(如关系数据库和XML)中查询语言同等的表达能力。这些扩展...
C#设计模式利用新的C#3.0语言和.NET 3.5框架中的特性来实现开发社区中广为人知的23种设计模式。本书包含了揭示每种模式在实际中如何运用的丰富案例,以及对于模式及其最佳使用场合和最佳组合方式的富有洞察力的...