共用方式為


Java 開發人員學習 C# 的藍圖

C# 和 Java 有許多相似之處。 當您學習 C# 時,您可以應用從 Java 程式設計中已獲得的大部分知識:

  1. 類似的語法:Java 和 C# 都屬於 C 語言系列。 這種相似性表示您已經可以閱讀並了解 C#。 雖然有些差異,但大部分的語法與 Java 和 C 相同。大括弧和分號是熟悉的東西。 ifelseswitch 等控制陳述式是相同的。 forwhiledo...while 的迴圈陳述式相同。 兩種語言中的 classinterface 的關鍵字是相同的。 從 publicprivate 的存取修飾詞是相同的。 甚至許多內建型別都使用相同的關鍵字:intstringdouble
  2. 物件導向範式:Java 和 C# 都是物件導向語言。 多型、抽象和封裝的概念在這兩種語言中都適用。 兩者都新增了新的建構,但核心功能仍然相關。
  3. 強型別:Java 和 C# 都是強型別語言。 您可以明確或隱含宣告變數的資料類型。 編譯器會強制執行型別安全。 在您執行程式碼之前,編譯器會攔截程式碼中與型別相關的錯誤。
  4. 跨平台:Java 和 C# 都是跨平台的。 您可以在您偏好的平台上執行您的開發工具。 您的應用程式可以在多個平台上執行。 您的開發平台不需要符合您的目標平台。
  5. 例外狀況處理:Java 和 C# 都會擲回例外狀況以指出錯誤。 兩者都會使用 try - catch - finally 區塊來處理例外狀況。 Exception 類別具有類似的名稱和繼承階層。 其中一個差異是 C# 沒有檢查型例外狀況的概念。 任何方法都可能會 (理論上) 擲回任何例外狀況。
  6. 標準程式庫:.NET 執行階段和 Java 標準程式庫 (JSL) 都支援一般工作。 兩者對於其他開放原始碼套件都有廣泛的生態系統。 在 C# 中,套件管理員是 NuGet。 它類似於 Maven。
  7. 記憶體回收:兩種語言都透過記憶體回收採用自動記憶體管理。 執行階段會從未參考的物件中回收記憶體。 其中一個差異是 C# 可讓您建立實值型別,類似於 struct 型別。

由於這些相似性,您幾乎可以立即在 C# 中提高生產力。 隨著您的學習進展,您應該學習 C# 中 Java 沒有的功能和慣用法:

  1. 模式比對:模式比對可根據複雜資料結構的形狀來實現簡潔的條件陳述式和運算式。 is 陳述式會檢查變數是否「是」某種模式。 以模式為基礎的 switch 運算式可提供豐富的語法來檢查變數,並根據其特性來做出決定。
  2. 字串插值原始字串常值:字串插值可讓您在字串中插入評估的運算式,而不是使用位置識別碼。 原始字串常值可提供一種將文字中的逸出序列降到最低的方式。
  3. 可為 Null 和不可為 Null 的型別:C# 會透過將 ? 後綴附加到型別來支援可為 Null 的實值型別可為 Null 的參考型別。 對於可為 Null 的型別,如果您在取消參考運算式之前不檢查 null,則編譯器會警告您。 對於不可為 Null 的型別,如果您可能會對該變數指派 null 值,則編譯器會警告您。 不可為 Null 的參考型別會將擲回 System.NullReferenceException 的程式設計錯誤降到最低。
  4. 擴充方法:在 C# 中,您可以建立擴充類別或介面的方法。 。 擴充方法可擴充程式庫中型別或實作指定介面的所有型別的行為。
  5. LINQ:Language Integrated Query (LINQ) 可提供一般語法來查詢和轉換資料,無論其儲存方式如何。
  6. 本機函式:在 C# 中,您可以在方法或其他本機函式內套疊函式。 本機函式提供了另一層的封裝。

C# 中還有一些 Java 中沒有的功能。 您會看到 asyncawait 以及 using 陳述式等可自動釋放非記憶體資源的功能。

C# 和 Java 之間也有一些相似的功能,存在細微但重要的差異:

  1. 屬性 (Properties)索引子:屬性和索引子 (將類別視為陣列或字典) 都具有語言支援。 在 Java 中,它們都是以 getset 開頭的方法的命名慣例。
  2. 記錄:在 C# 中,記錄可以是 class (參考) 或 struct (值) 型別。 C# 記錄可以是不可變的,但不要求是不可變的。
  3. 元組在 C# 和 Java 中具有不同的語法。
  4. 屬性 (Attributes) 類似於 Java 註釋。

最後,還有一些 C# 中沒有的 Java 語言功能:

  1. 檢查型例外狀況:在 C# 中,任何方法理論上都可能會擲回任何例外狀況。
  2. 檢查型陣組共變數:在 C# 中,陣列不是安全的共變數。 如果您需要共變結構,則應使用泛型集合類別和介面。

整體而言,對於有 Java 經驗的開發人員來說,學習 C# 應該會很順利。 您會發現足夠多的熟悉慣用法可快速提高工作效率,而且您很快就學會新的慣用法。