本页列出了 Visual C# 2010 中的新功能和增强功能。 结合使用这些新功能可提高 Microsoft Office 的可编程性,增强浏览代码的能力,为测试驱动的开发提供支持,等等。 有关更多信息,请参见 Visual Studio 2010 产品亮点介绍。
单击下面几节中的链接可阅读有关相应功能的更多信息。
动态支持
Visual C# 2010 引入了一种新类型 dynamic,以便支持对动态类型的后期绑定。 借助这个新类型可实现许多新方案,包括对 Office 自动化 API 等 COM API、IronPython 库等动态 API 和 HTML 文档对象模型 (DOM) 的简化访问。 有关更多信息,请参见使用类型 dynamic(C# 编程指南)和 dynamic(C# 参考)。
Office 可编程性
通过增加命名参数和可选参数、dynamic 类型、索引属性以及可选的 ref 修饰符,极大地增强了对 COM 接口(包括 Office 自动化 API)的访问。
有关更多信息,请参见 命名实参和可选实参(C# 编程指南)、使用类型 dynamic(C# 编程指南)、如何:在 COM 互操作编程中使用索引属性(C# 编程指南)和如何:通过使用 Visual C# 2010 功能访问 Office 互操作对象(C# 编程指南)。
类型等效性支持
现在部署的应用程序可以包含嵌入的类型信息来替换从主互操作程序集 (PIA) 导入的类型信息。 包含嵌入类型信息的应用程序可以使用运行时中的类型,而无需引用运行时程序集。 如果发布了各种版本的运行时程序集,则包含嵌入类型信息的应用程序可以使用各种版本,而不必重新编译。 有关更多信息,请参见 /link(C# 编译器选项)。 有关示例,请参见演练:嵌入托管程序集中的类型(C# 和 Visual Basic)。
协变和逆变
通过“协变”,可以使用与泛型参数所指定的类型相比,派生程度更大的类型;而通过“逆变”,可以使用派生程度更小的类型。 这样可以对实现了变体接口的类进行隐式转换,并提高将方法签名与变体委托类型进行匹配的灵活性。 可以使用新的 in 和 out 语言关键字创建变体接口和委托。 .NET Framework 还引入了针对若干现有泛型接口和委托的变体支持,包括 IEnumerable<T> 接口以及 Func<TResult> 和 Action<T> 委托。 有关更多信息,请参见协变和逆变(C# 和 Visual Basic)。
新命令行选项
/langversion 命令行选项导致编译器只接受在指定版本 C# 中有效的语法。
/appconfig 编译器选项使 C# 应用程序能够向编译器指明程序集的应用程序配置文件的位置。
以下各节介绍了 Visual Studio 集成开发环境 (IDE) 的增强功能。
调用层次结构
使用“调用层次结构”可以通过显示下列内容在代码中进行导航:
-
对于或来自所选方法、属性或构造函数的所有调用
-
接口成员的所有实现
-
虚拟或抽象成员的所有重写
这有助于更好地理解代码的流动方式,以及评估代码更改的效果。 有关更多信息,请参见调用层次结构。
定位到
可以使用“定位到”功能来搜索源代码中的符号或文件。 通过使用 Camel 大小写格式和下划线字符,可以将符号分为多个关键字,这样可搜索包含在符号中的关键字。
有关更多信息,请参见如何:搜索对象、定义和引用(符号)。
突出显示引用
单击源代码中的某个符号时,将在文档中突出显示该符号的所有实例。 若要移动到下一个或上一个突出显示的符号,可以使用 Ctrl+Shift+向下键或 Ctrl+Shift+向上键。 有关更多信息,请参见如何:使用引用突出显示。
使用时生成
通过“使用时生成”功能,可以直接使用类和成员,而不必提前定义它们。 您不必离开当前代码位置,即可为要使用但尚未定义的类、构造函数、方法、属性、字段或枚举生成存根。 这将尽可能减少对工作流的中断。
“使用时生成”支持如测试先行的开发之类的编程模式。 有关更多信息,请参见使用时生成和演练:带有“使用时生成”功能的测试先行支持。
IntelliSense 建议模式
IntelliSense 现在为 IntelliSense 语句完成功能提供两种备选方式:“完成模式”和“建议模式”。 如果在定义类和成员之前使用它们,则使用“建议模式”。 有关更多信息,请参见列出成员。
实时语义错误
“实时语义错误”功能在 Visual C# 2010 中得到了增强。 已对用波浪下划线指示键入时的错误和警告这一功能进行了扩展,现在可适用于方法体外部的构造,例如返回类型、参数类型以及方法声明中的默认值。
Visual C# 2010 中提供了一些示例应用程序,演示如何使用新增的 C# 功能来简化 Office 编程、提供对 IronPython 库的访问、创建动态对象、开发与使用协变和逆变泛型委托等等。 有关 Visual C# 语言示例以及如何访问这些示例的信息,请参见 Visual C# 示例应用程序。