使用 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 應用程式為目標