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 版本引入了一系列重要的新特性,极大地提升了开发效率和代码的可读性。以下是对这些特性的详细解释: 1. **林克(LINQ)**:语言集成查询(Language Integrated Query)是 C# 3.0 的核心特性之一,它...
本书作为初学者的指南,详细解释了这些新特性,包括但不限于自动实现属性、匿名类型、扩展方法、查询表达式、动态调用等,这些都是C# 3.0版本中最吸引人的特性之一。 ### 自动实现属性 自动实现属性是C# 3.0新增的...
本文将详细介绍 C# 3.0 中的一些关键新特性,并通过具体示例来解释这些特性的应用。 #### 自动实现的属性 (Auto-Implemented Properties) C# 3.0 引入了自动实现的属性这一概念,这使得定义只包含 getter 和 ...
LINQ(Language Integrated Query,语言集成查询)是C# 3.0中的明星特性,它提供了一种统一的方式来处理各种数据源,如数据库、XML文档、集合等。LINQ的核心是查询表达式,它采用类似SQL的语法进行数据检索。例如: ...
C# 3.0是微软在.NET Framework 3.5中推出的重要版本,它极大地扩展了C#语言的功能,引入了一系列创新的编程特性,旨在提高开发效率和代码可读性。以下将详细介绍C# 3.0的一些核心知识点: 1. **匿名方法与Lambda...
2. Lambda表达式:这是C# 3.0引入的一项重要特性,允许你简洁地定义匿名函数,常用于 LINQ 查询表达式中。 3. 匿名类型:在C# 3.0中,你可以创建没有明确类型的对象,这在处理临时数据时非常方便。 4. 局部类型...
在本书中,你将学习到如何利用C# 3.0的新特性进行面向对象编程,如泛型、委托、事件、属性和接口。此外,还将探索.NET 3.5框架下的高级主题,如并发控制、异常处理、反射、元数据以及与.NET Framework库的深度集成。...
【标题】:“vs2008视频教程 2 C#3.0与VB9.0的新特性介绍” 本视频教程聚焦于Visual Studio 2008中的编程语言C# 3.0和Visual Basic 9.0的最新特性。Visual Studio 2008作为微软开发工具的重要组成部分,它在提升...
在C# 3.0中,最重要的新特性之一是 LINQ (Language Integrated Query,语言集成查询)。LINQ允许开发者以一种直观、类型安全的方式处理数据,无论数据源是数据库、XML文档还是其他集合。通过使用LINQ,代码变得更加...
这本书是C#开发者的重要参考资料,涵盖了C# 3.0的新特性和核心概念,旨在帮助程序员理解和掌握这个强大的.NET框架语言。 C# 3.0在C# 2.0的基础上引入了许多创新性功能,其中最显著的是对面向服务编程的支持和语言...
C# 3.0是.NET Framework 3.5的一部分,带来了许多新的语言特性和改进,旨在提高开发效率和代码简洁性。以下是对这些特性的详细解释: 1. **自动属性(Auto-Implemented Properties)** 自动属性是C# 3.0引入的一个...
C#3.0作为其一个重要里程碑,引入了多项新特性,如匿名方法、Lambda表达式、扩展方法和Linq(Language Integrated Query),极大地提高了程序员的生产力。 在《C#3.0完全自学宝典》中,读者将全面了解到C#的基础...
在“C# 3.0 锐利体验系列课程(1)”中,"概览"部分将为学员提供一个整体的入门指南,介绍上述关键特性的概念和基本用法。通过这一部分的学习,开发者将能够对C# 3.0的主要改进有一个全面的理解,为进一步深入学习打下...
1. **泛型**:在C# 2.0中引入的泛型为代码重用提供了更大的灵活性,但在C# 3.0中,泛型得到了进一步加强。新增了`var`关键字,它允许编译器推断变量类型,使得匿名类型和LINQ查询更为简洁。此外,还支持了泛型约束,...
C# 3.0 是微软.NET Framework 3.5的一部分,是C#语言的一个重要版本,引入了许多新特性,使得编程更加简洁、高效。在这个入门系列中,我们将深入探讨C# 3.0的关键概念,帮助初学者快速掌握这门强大的编程语言。 1. ...
通过这些案例,读者不仅能够掌握C# 3.0的基本语法和高级特性,还能了解到实际开发中的常见问题和解决方案。这些源文件提供了一个动手实践的平台,使理论知识与实际操作相结合,对于提升编程技能大有裨益。对于初学者...
在C# 3.0中,Visual Studio 2008引入了一系列的新特性,极大地提升了开发效率和代码可读性。其中,`var`关键字是一个非常显著的改变,它允许开发者进行隐式类型声明,是匿名类型的基石。下面将详细探讨`var`的关键字...
根据提供的文件信息,本文将围绕"C#3.0本质论"这一主题展开,深入探讨C#3.0版本的关键特性、改进以及它在.NET框架中的应用。虽然提供的链接无法直接访问,但我们可以基于标题和描述中提及的信息进行讨论。 ### C#...
C# 3.0 是C#编程语言的一个重要版本,引入了多项新特性,极大地提升了开发效率和代码的可读性。以下是对这些特性的详细解释: 1. **自动属性(Auto-Implemented Properties)**: 自动属性允许开发者快速创建只包含...
课程(1)则作为一个整体的概述,会介绍C# 3.0的主要新特性,除了Linq和Lambda外,可能还会涵盖匿名类型、自动属性、扩展方法等。这部分内容对于初学者来说非常重要,因为它帮助构建对C# 3.0新特性的全面认识,为后续...