不同的開發方式
在支援的程式語言之間,最大的差異自然就是語言的語法。C++ 和 Visual Basic 都已經行之有年,而且留存有大量的程式碼,當您要把它們昇級到 .NET 時,您必須將這些舊有的程式碼納入考量。另一方面,Visual C# 則是一個全新的程式語言。在以下幾個章節中,將會以對應的範例程式碼來介紹幾個進階主題,例如建置程序和定義命名空間,但在這裡將先說明語言之間較明顯的差異。
區分大小寫 - C++ 和 Visaul C# 都區分大小寫,而 Visual Basic 則不區分。但是,程式若要和 CLS 相容,public 成員不能只是大小寫不同。這項限制可以讓 Visual Basic (以及其他和 CLS 相容的語言) 產生元件,以及使用由其他區分大小寫之語言所建立的元件。
參考程式庫 - 若要使用位於名稱空間中的類別,首先必須取得包含必要命名空間的組件參考。所有 .NET 程式都至少會使用 Mscorlib.dll (通常位於 Windows\System 目錄中) 中的 System 命名空間。Visual Basic 和 Visual C# 會隱含參考 Mscorlib.dll,但是您必須在 Managed Extensions for C++ 程式中包含下列前置處理器指示詞 (Preprocessor Directive):
#using <mscorlib.dll>
雖然 Visual C# 和 Visual Basic 會隱含參考 mscorlib 組件,但是其他組件必須使用 /reference 編譯參數。參考的程式庫通常是位於應用程式目錄或應用程式的子目錄中。設計供許多應用程式使用的程式庫 (例如,協力廠商提供的工具) 是位於組件快取 (WindowsDirectory\Assembly) 中,而且必須遵守特定方針。應用程式組態檔可提供其他選項。但是,對 ASP.NET 應用程式而言,元件應該位於應用程式虛擬目錄起點下的 \Bin 子目錄中。
匯入命名空間 - 類別可用完整方式參考 (例如類似完整路徑名稱的 System.IO.FileStream),或是將它們的命名空間匯入程式中,之後就不需要內含的完整類別名稱。為了方便存取 System 物件,必須匯入命名空間,如下列表格中所示。
Managed Extensions for C++ |
|
Visual C# |
|
Visual Basic |
|
參考物件成員 - Visual Basic 和 Visual C# 都支援以句點 (.) 做為範圍解析 (Scope-Resolution) 運算子,例如,在參考 Console 的 WriteLine 方法時,就可以使用 Console.WriteLine 語法。Managed Extensions for C++ 則是使用雙冒號 (::) 做為解析運算子。
宣告物件 - 在 Managed Extensions for C++ 和 Visual C# 中,變數必須先宣告然後才能使用,但在 Visual Basic 中則不需要。您可以使用 new 關鍵字來建立新的物件執行個體。下列表格中包含這三種語言的宣告和建立範例陳述式。每一個陳述式都會宣告和建立位於 Lib 命名空間、名稱為 myComp、型別為 Comp 的物件。
C++ |
|
Visual C# |
|
Visual Basic |
|
程式進入點 - 每一個可執行程式都有外部進入點 (Entry Point),也就是應用程式開始執行的位置。Managed Extensions for C++ 的語法沒有變更,但是在 Visaul C# 和 Visual Basic 中,全部都是在類別中進行。下列程式碼說明 Managed Extensions for C++ 語法:
void main() {
}
下列程式碼說明 Visual C# 語法:
class MainApp {
public static void Main() {
}
}
下列程式碼說明 Visual Basic 語法:
Public Module modmain
Sub Main()
End Sub
End Module
但其實 Managed Extensions for C++ 編譯器會將進入點封裝在類別中。
定義命名空間和類別 - 這三種語言都支援建立自訂命名空間和這些命名空間中的類別。這三種語言都是用程式碼來處理這項作業,只是語法略為不同。例如,Managed Extensions for C++ 會使用 Managed 類別宣告,但是 Visual C# 中的命名空間和類別宣告則不需要有結尾分號。下列程式碼說明 Managed Extensions for C++ 語法:
namespace CompVC {
__gc class StringComponent {
public:
StringComponent() {
}
};
};
下列程式碼說明 Visual C# 語法:
namespace CompCS {
public class StringComponent {
public StringComponent() {...}
}
}
下列程式碼說明 Visual Basic 語法:
Namespace CompVB
Public Class StringComponent
Public Sub New()
End Sub
End Class
End Namespace
請參閱
Hello World | 撰寫簡單的 .NET 元件 | 簡單元件的用戶端 | 開發教學課程摘要 | 附錄 A:瀏覽命名空間的工具