共用方式為


使用 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 物件模型時,並沒有相同的捷徑可用。在以 Visual Basic 與 C# 所撰寫的 Managed 程式碼和 Office 開發的基本程式設計功能之間也有一些差異。

Visual Basic 和 C# 之間的主要差異

下表顯示在 Office 開發中,Visual Basic 與 C# 之間的主要差異。

功能

描述

Visual Basic 支援

C# 支援

選擇性參數

在您呼叫方法時,許多 Microsoft Office 方法都會有不必要的參數。如果未傳遞參數值,則會使用預設值。

Visual Basic 支援選擇性參數。

C# 不支援選擇性參數。因此,您必須對所有參數傳遞值。如需詳細資訊,請參閱了解 Office 方案中的選擇性參數

以傳址 (By Reference) 方式傳遞參數

大部分 Microsoft Office 主要 Interop 組件中的選擇性參數都可以用傳值 (By Value) 方式傳遞。然而,在部分主要 Interop 組件中,接受參考型別 (Reference Type) 的選擇性參數都必須以傳址方式傳遞。

如需實值和參考型別參數的詳細資訊,請參閱以傳值和傳址方式傳遞引數 (適用於 Visual Basic) 和傳遞參數 (C# 程式設計手冊)

以傳址方式傳遞參數無需額外工作。Visual Basic 編譯器 (Compiler) 會在需要時以傳址方式自動傳遞參數。

接受部分主要 Interop 組件 (如 Word 的主要 Interop 組件) 之參考型別的選擇性參數,必須使用 ref 關鍵字傳遞,而且必須傳遞內含實際值的變數。

參數型屬性

部分屬性會接受參數,方式如同唯讀功能。

Visual Basic 支援接受參數的屬性。

C# 需要使用 get 和 set 存取子 (Accessor) 來設定和擷取接受參數的屬性值。

晚期繫結

晚期繫結包含判斷物件在執行階段時的屬性,而不是在設計階段將變數轉換為 (Cast) 物件型別。

Visual Basic 可以在 Option Strict 陳述式設定為 Off 時執行晚期繫結。如需詳細資訊,請參閱 Option Strict 陳述式

C# 不會直接執行晚期繫結。不過,您可以使用 System.Reflection 命名空間 (Namespace) 中的型別,判斷所指定型別的可用成員,並執行某種型別的晚期繫結。

陣列索引

在 Microsoft Office 應用程式中,集合的陣列下限是以 1 起始。Visual Basic 和 Visual C# 則預設會使用以 0 起始的陣列。如需詳細資訊,請參閱 陣列 (C# 程式設計手冊)Visual Basic 中的陣列概觀

若要在 Microsoft Office 應用程式的物件模型中,存取集合的第一個項目,請使用索引 1,而不要使用 0。

若要在 Microsoft Office 應用程式的物件模型中,存取集合的第一個項目,請使用索引 1,而不要使用 0。

Office 開發與 Managed 程式碼之間的主要差異

下表顯示以 Visual Basic 或 C# 所撰寫的 Managed 程式碼與 Office 開發之間的主要差異。

功能

說明

Visual Basic 和 C# 支援

陣列索引

在 Microsoft Office 應用程式中,集合的陣列下限是以 1 起始。Visual Basic 和 Visual C# 則會使用以 0 起始的陣列。如需詳細資訊,請參閱 陣列 (C# 程式設計手冊)Visual Basic 中的陣列概觀

若要在 Microsoft Office 應用程式的物件模型中,存取集合的第一個項目,請使用索引 1,而不要使用 0。

請參閱

工作

HOW TO:透過主要 Interop 組件以 Office 應用程式為目標

HOW TO:轉型 Office 應用程式傳回的物件

概念

撰寫 Office 方案中的程式碼

了解 Office 方案中的選擇性參數