Visual Basic 与 C# 编程比较

更新:2007 年 11 月

可以使用 Visual Basic 或 C# 创建 Visual Studio Tools for Office 解决方案。由于 Microsoft Office 对象模型的设计初衷是用于 Microsoft Visual Basic for Applications (VBA),因此 Visual Basic 开发人员可以轻松地使用 Microsoft Office 应用程序公开的对象。而使用 C# 的开发人员在使用 Microsoft Office 对象模型时则不能享受到同样的便捷。Office 开发中的基本编程功能与用 Visual Basic 和 C# 编写的托管代码之间也存在一些差异。

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

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

功能

说明

Visual Basic 支持

C# 支持

可选参数

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

Visual Basic 支持可选参数。

C# 不支持可选参数。相反,您必须为所有参数传递值。有关更多信息,请参见了解 Office 解决方案中的可选参数

按引用传递参数

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

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

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

必须使用 ref 关键字传递某些主互操作程序集(如 Word 的主互操作程序集)中接受引用类型的可选参数,并且必须传递包含实际值的变量。

参数化属性

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

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

C# 需要使用 get 和 set 访问器来设置和检索接受参数的属性值。

后期绑定

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

当 Option Strict 语句设置为 Off 时,Visual Basic 可以执行后期绑定。有关更多信息,请参见 Option Strict 语句

C# 不直接执行后期绑定。不过,您可以使用 System.Reflection 命名空间中的类型来确定指定类型的可用成员,并执行某种类型的后期绑定。

数组索引

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

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

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

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

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

功能

说明

Visual Basic 和 C# 支持

数组索引

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

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

请参见

任务

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

如何:强制转换 Office 应用程序返回的对象

概念

在 Office 解决方案中编写代码

了解 Office 解决方案中的可选参数