本文討論 Java 和 C# 之間的異同點,目的在於當遷移到 .NET 時,讓 Java 開發人員掌握所涉及的一些知識。Java 和 C# 之間的主要相似點是:
• |
Java 和 C# 都源於 C++,並且共有 C++ 的一些特徵。 |
• |
兩種語言都需要編譯成中間代碼,而不是直接編譯成純機器碼。Java 編譯成 JAVA 虛擬機器 (Java Virtual Machine, JVM) 位元組碼,而 C# 則編譯成通用中間語言 (Common Intermediate Language, CIL)。 |
• |
Java 位元組碼是通過稱為 JAVA 虛擬機器 (JVM) 的應用程式執行的。類似地,已編譯的 C# 程式由公用語言運行庫 (Common Language Runtime, CLR) 執行。 |
• |
除了一些細微的差別以外,C# 中的異常處理與 Java 非常相似。C# 用 try...catch 構造來處理執行階段錯誤(也稱為異常),這和 Java 中是完全一樣的。System.Exception 類是所有 C# 異常類的基類。 |
• |
同 Java 一樣,C# 是強型別檢查程式設計語言。編譯器能夠檢測在運行時可能會出現問題的類型錯誤。 |
• |
同 Java 一樣,C# 提供自動記憶體回收功能,從而使編程人員避免了跟蹤分配的資源。 |
• |
Java 和 C# 都支援單一繼承和多介面實現。 |
現在讓我們看一看本文涵蓋的重要差異:
• |
C# 語言引入了一些新的語言構造,如 foreach、索引器、屬性、委託、運算子多載和其他語言構造。在本文後面我們將更詳細地討論這些構造。 |
源檔案約定
我們需要知道,兩種語言在來源程式的檔案命名規範和結構上有一些不同:
檔案命名
包含 C# 類的檔案的命名規範與 Java 有點不同。首先,在 Java 中,所有源檔案的副檔名都為 .java。每個源檔案都包含一個頂層公用類聲明,並且類名必須與檔案名稱相匹配。換句話說,一個用公用範圍聲明的名為 Customer 的類必須定義在具有名稱 Customer.java 的源檔案中。
而 C# 原始碼是由 .cs 副檔名表示的。與 Java 不同,源檔案可以包含多個頂層公用類聲明,而檔案名稱不需要與任何類名相匹配。