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。 |