共用方式為


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

C# 和 Python 共用類似的概念。 如果已經認識 Python,這些熟悉的概念可協助您學會 C#。

  1. 物件導向:Python 和 C# 都是物件導向語言。 即使語法不同,Python 類別的所有概念皆適用於 C#。
  2. 跨平台:Python 和 C# 都是跨平台語言。 以任一語言撰寫的應用程式,皆可在許多平台上執行。
  3. 記憶體回收:兩種語言都透過記憶體回收採用自動記憶體管理。 執行階段會從未參考的物件中回收記憶體。
  4. 強型別:Python 和 C# 都是強型別語言。 型別轉換不會以隱含的方式發生。 差異稍後會說明,因為 C# 是靜態型別,而 Python 則是動態型別。
  5. 非同步 / Await:Python 的 asyncawait 功能,直接受到 C# 的 asyncawait 支援啟發。
  6. 模式比對:Python 的 match 運算式和模式比對,類似於 C# 的 模式比對 switch運算式。 您可以用它們檢查複雜的資料運算式,判斷它是否符合模式。
  7. 陳述式關鍵字:Python 和 C# 共用許多關鍵字,例如 ifelsewhilefor 等等。 雖然並非所有語法都相同,但如果您懂 Python,兩者的相似性就足以幫助您看懂 C#。

開始學 C# 時,您會學習 C# 與 Python 之間差異的這些重要概念:

  1. 縮排 vs. 權杖:在 Python,新行和縮排是第一類的語法元素。 在 C#,空白字元並不重要。 權杖,例如 ; 個別陳述式,以及其他權杖 {,以及 if 和其他區塊陳述式的 } 控制區塊範圍。 然而,為了可讀性,大部分編碼樣式 (包括這些文件中使用的樣式),都是使用縮排來強化 {} 所宣告的區塊範圍。
  2. 靜態型別:在 C#,變數宣告包含其型別。 將變數重新指派給不同型別的物件,會產生編譯器錯誤。 在 Python,型別可以在重新指派時變更。
  3. 可為 Null 的類型:C# 變數可以是可為 Null 的不可為 Null 的。 不可為 Null 的型別,屬於不能是 Null (或 Nothing) 的型別。 它一向是指有效物件。 相較之下,可為 Null 的型別可能參考有效的物件或 Null。
  4. LINQ:構成語言整合查詢 (LINQ) 的查詢運算式關鍵字,在 Python 並非關鍵字。 不過,itertoolsmore-itertoolspy-linq 這類 Python 程式庫提供類似的功能。
  5. 泛型:C# 泛型使用 C# 靜態類型,就提供給型別參數的引數進行判斷提示。 泛型演算法可能必須指定引數型別必須滿足的限制式。

最後,Python 有一些 C# 沒有的功能:

  1. 結構 (鴨子) 型別:在 C#,型別有名稱和宣告。 除了 Tuple 之外,結構相同的型別無法交換。
  2. REPL:C# 沒有可快速原型化解決方案的 Read-Eval-Print 迴圈 (REPL)。
  3. 重要的空白字元:您必須正確使用大括弧 {} 備註區塊範圍。

如果您懂 Python,就能順利踏上 C# 學習之旅。 這些語言的概念和慣用語相似。