C# 中的新增功能

更新: 2008 年 7 月

Visual C# 2008 Service Pack 1 中的新增功能

C# 语言

功能

说明

多种编译器改进

已对 C# 编译器进行了多处改进,以便消除不符合语言规范的地方。其中一些改进是重大更改,而其他改进则只是软件更新或增强。有关重大更改的更多信息,请参见 Visual C# 2008 重大更改。有关在 Service Pack 1 中修复的其他 Bug 的更多信息,请参见 Visual Studio 2008 Service Pack 1 Beta for Visual C# 更改及已修复问题列表

Visual C# IDE

功能

说明

实时语义错误

Visual C# 2008 Service Pack 1 引入了一个新功能 - 实时语义错误,该功能可提供更为完整的一组关于代码的错误信息。此功能检查以前仅在生成后报告的表达式级错误。在您编写代码时,该功能用红色波浪下划线突出显示错误。有关波浪下划线的更多信息,请参见编辑代码 (Visual C#)

LINQ 查询调试

LINQ 查询的调试在 Service Pack 1 中得到了极大的增强。

  • 现在,当您逐句通过查询表达式中的各行时,可以在“监视”窗口和数据提示中查看范围变量。

  • 调试器不再隐藏匿名类型的名称,并允许它们在强制转换和实例化中显示。这样,便可以在调试会话过程中创建匿名类型的临时实例。强制转换为匿名类型及从匿名类型强制转换则可以正确计算。

  • 为“添加至监视”生成的字符串已经改进,而且可以生成表达式,与在 Visual Studio 2008 的最初发行版中比较,这些表达式会更加频繁地计算。

有关更多信息,请参见位于 Microsoft 网站上的 Sree's ventures in code space(Sree 在代码空间的冒险行为)

为解决方案中的所有文件显示任务列表注释

在 Visual Studio 的早期版本中,仅用打开文件内的任务注释填充任务列表。在 Visual Studio 2008 Service Pack 1 中,C# 集成开发环境 (IDE) 显示解决方案中所有打开的及关闭的文件中的任务注释。有关更多信息,请参见如何:创建任务列表注释

重命名 Windows Presentation Foundation 项目中的重构

Visual Studio 2008 Service Pack 1 允许您使用重命名重构功能对 XAML 中定义的引用进行重命名。有关重命名重构的更多信息,请参见重命名

LINQ

功能

说明

对 [M:Enumerable.Cast`1] 方法的改进

Visual C# 2008 Service Pack 1 通过禁用基元值转换和显式定义的用户转换来提高 Enumerable.Cast<T> 方法的性能。从 int 数据类型到 long 数据类型的转换便是一个基元值转换的示例。

[M:Enumerable.Where`1] 和 [M:Enumerable.Select`1] 方法的性能提高

Visual C# 2008 Service Pack 1 提高了 Where 标准查询运算符和 Select 标准查询运算符的性能。

Visual C# 2008 最初发行版中的新增功能

C# 3.0 语言

C# 3.0 语言和编译器引入了多种新的语言功能。这些新的语言构造可以分别用在各种上下文中,并且可以共同完成语言集成查询 (LINQ)。有关 LINQ 的更多信息,请参见 The LINQ Project(LINQ 项目)。

下表列出了新增的 C# 3.0 语言功能:

功能

说明

隐式类型的本地变量和数组

在与本地变量一起使用时,var 关键字指示编译器根据初始化语句右侧的表达式推断变量或数组元素的类型。

对象初始值设定项

支持无需显式调用构造函数即可进行对象初始化。

集合初始值设定项

支持使用初始化列表而不是对 Add 或其他方法的特定调用来初始化集合。

扩展方法

使用静态方法扩展现有类,这些静态方法可以通过实例方法语法进行调用。

匿名类型

允许动态创建可以添加到集合中并且可以使用 var 进行访问的未命名结构化类型。

Lambda 表达式

支持带有可绑定到委托或表达式树的输入参数的内联表达式。另请参见匿名函数(C# 编程指南)

查询关键字

用来指定查询表达式中子句的关键字:

  • from 子句

  • where 子句(可选)

  • 排序子句(可选)

  • join 子句(可选)

  • select 或 group 子句

  • into 子句(可选)

自动实现的属性

支持使用简化的语法声明属性。

分部方法定义

分部类型现在可以包含分部方法。

C# 3.0 编译器

  • /win32Manifest/noWin32Manifest 编译器开关。
    这些新的编译器开关用于为在 Windows Vista 上运行的程序指定请求的执行级别。

Visual C# IDE

功能

说明

多目标

Visual Studio 2008 允许您为项目指定 .NET Framework 的版本(即 .NET Framework 2.0、3.0 或 3.5)。应用程序的 .NET Framework 目标是在计算机上运行此应用程序时所需的 .NET Framework 的版本。有关更多信息,请参见以特定的 .NET Framework 为目标

新的项目类型和模板

为 Windows Presentation Foundation、Windows Communication Foundation 和 Web 项目提供了多个新的项目模板。有关更多信息,请参见 Visual C# 版本中的项目模板Visual Studio 中的默认项目模板

对于 C# 3.0 的 IntelliSense 支持

Visual C# 代码编辑器提供了语句结束和快速信息功能,以支持 C# 3.0 中的下列新语言构造:

  • 隐式类型的局部变量

  • 查询表达式

  • 扩展方法

  • 对象/集合初始值设定项

  • 匿名类型

  • Lambda 表达式

  • 分部方法

有关更多信息,请参见 Visual C# IntelliSense

对 C# 3.0 的重构支持

为了支持下列新语言构造,已经更新了重构功能“重命名”、“签名更改”、“提取方法”和“将局部变量提升为参数”:

  • 查询表达式

  • 扩展方法

  • Lambda 表达式

此外,重构功能还提供了新的选项和警告,以便帮助防止由于重构操作而造成意外的后果。有关更多信息,请参见重构

设置代码格式

代码编辑器为包括查询表达式在内的多个新 C# 3.0 语言构造提供了格式设置选项。有关更多信息,请参见“选项”对话框 ->“文本编辑器”->“C#”->“格式设置”

组织 Using 语句

Visual C# 代码编辑器提供了简便方法用来对 using 和 extern 声明进行排序和移除没有使用的声明。

请参见

其他资源

语言集成查询 (LINQ)

Is C# becoming a functional language?(C# 正在成为一种功能丰富的语言吗?)

.NET Framework 3.5 中新增的库类

修订记录

日期

历史记录

原因

2008 年 7 月

增加了有关 Visual C# 2008 Service Pack 1 的一节。

SP1 功能更改。