在 Office 解决方案中使用 Visual Basic 与 Visual C# 编程的差异

可以使用 Visual Basic 或 Visual C# 创建 Office 解决方案。 由于 Microsoft Office 对象模型的设计初衷是用于 Microsoft Visual Basic for Applications (VBA),因此 Visual Basic 开发人员可以轻松地使用 Microsoft Office 应用程序公开的对象。 在 Visual Studio 2010 中,Visual C# 开发人员可使用的功能与 Visual Basic 开发人员可使用的功能大体相同,但在某些情况下,他们必须编写额外的代码才能使用 Office 对象模型。 Office 开发中的基本编程功能与用 Visual Basic 和 C# 编写的托管代码之间也存在一些差异。

**适用于:**本主题中的信息适用于 Microsoft Office 2010 和 2007 Microsoft Office system 的文档级项目和应用程序级项目。有关更多信息,请参见按 Office 应用程序和项目类型提供的功能

Visual Basic 与 Visual C# 之间的主要差异

下表显示了在 Office 开发中 Visual Basic 与 Visual C# 之间的主要差异。

功能

说明

Visual Basic 支持

Visual C# 支持

可选参数

许多 Microsoft Office 方法都有在调用方法时不是必需的参数。 如果没有为参数传递值,则会使用默认值。

Visual Basic 支持可选参数。

大多数情况下 Visual C# 都支持可选参数。 有关更多信息,请参见Office 解决方案中的可选参数

按引用传递参数

可以按值传递大多数 Microsoft Office 主互操作程序集中的可选参数。 但是,在某些主互操作程序集中,必须按引用传递接受引用类型的可选参数。

有关值类型和引用类型参数的更多信息,请参见通过值和通过引用传递参数 (Visual Basic)(适用于 Visual Basic)和传递参数(C# 编程指南)

无需额外的工作即可按引用传递参数。 在必要时,Visual Basic 编译器会自动按引用传递参数。

大多数情况下,Visual C# 编译器会在必要时自动通过引用传递参数。 有关更多信息,请参见Office 解决方案中的可选参数

参数化属性

某些属性接受参数,并充当只读函数。

Visual Basic 支持接受参数的属性。

Visual C# 支持接受参数的属性。

后期绑定

后期绑定涉及到在运行时确定对象的属性,而不是在设计时将变量强制转换为对象类型。

当 Option Strict 处于关闭状态时,Visual Basic 可执行后期绑定。 当 Option Strict 处于打开状态时,您必须显式转换对象并使用 System.Reflection 命名空间中的类型来访问后期绑定的成员。 有关更多信息,请参见 Office 解决方案中的后期绑定

Visual C# 在面向 .NET Framework 4 的项目中执行后期绑定。 在面向 .NET Framework 3.5 的项目中,您必须显式强制转换对象并使用 System.Reflection 命名空间中的类型来访问后期绑定的成员。 有关更多信息,请参见 Office 解决方案中的后期绑定

Office 开发与托管代码之间的主要差异

下表显示了 Office 开发与用 Visual Basic 或 Visual C# 编写的托管代码之间的主要差异。

功能

说明

Visual Basic 和 Visual C# 支持

数组索引

Microsoft Office 应用程序中的集合的数组下限从 1 开始。 Visual Basic 和 Visual C# 使用从 0 开始的数组。 有关更多信息,请参见数组(C# 编程指南)数组 (Visual Basic)

若要访问 Microsoft Office 应用程序的对象模型中集合的第一项,请使用索引 1 而非 0。

请参见

任务

如何:通过主互操作程序集面向 Office 应用程序

Office 解决方案中的后期绑定

参考

反射(C# 和 Visual Basic)

概念

在 Office 解决方案中编写代码

Office 解决方案中的可选参数