โหมดมืด
C#
ส่วนหนึ่งของ Beginner Book
C# (อ่านว่า "ซีชาร์ป") = ภาษา OOP (object-oriented programming — เขียนโปรแกรมแบบยึด "วัตถุ" เป็นหลัก) ผสม functional (เขียนแบบเน้นฟังก์ชัน) รันบน .NET runtime (ตัวที่คอยรันโปรแกรม) Microsoft สร้างขึ้นปี 2000 โดย Anders Hejlsberg[^hejlsberg]
ใช้ทำได้หลายงาน:
- web — ASP.NET Core (framework สร้าง web/API)
- desktop — WPF, WinUI (สร้างแอป Windows)
- mobile — MAUI (สร้างแอป iOS/Android ด้วยโค้ดชุดเดียว)
- game — Unity (game engine ที่ใช้ C#)
- cloud — Azure Functions (รันโค้ดบน cloud แบบ serverless)
- ML — ML.NET (machine learning — การเรียนรู้ของเครื่อง)
เป็นภาษาทันสมัยที่สุดในกลุ่มภาษาใช้กันแพร่หลาย (mainstream) ออกเวอร์ชันใหม่ทุก 1 ปี และแต่ละเวอร์ชันมีฟีเจอร์ใช้งานได้จริง
[^hejlsberg]: Anders Hejlsberg เป็นผู้ออกแบบหลัก (lead architect) ของ C# คนเดียวกับที่ออกแบบ Turbo Pascal (ภาษาเก่ายุค DOS) และ TypeScript
หนังสือนี้พาคุณไปถึงไหน
อ่านจบ + ทำจุดตรวจ (checkpoint) ท้ายบทหมด คุณจะ:
- เข้าใจ .NET ecosystem (ระบบนิเวศของเครื่องมือรอบ ๆ .NET) — รู้จัก CLR (Common Language Runtime = ตัวรันโค้ด), BCL (Base Class Library = ห้องสมุดมาตรฐานที่ติดมา) และ NuGet (ตัวจัดการ library) — กางรายละเอียดในบท 0
- เขียน C# แบบเป็นธรรมชาติของภาษา (idiomatic) — ไม่ใช่ Java สลับ syntax
- ใช้ฟีเจอร์หลักของภาษาได้คล่อง:
- LINQ — query ข้อมูลในโค้ดได้คล้าย SQL
- async/await — เขียนโปรแกรมแบบไม่ต้องรอผลทีละขั้น
- record — class ย่อสำหรับเก็บข้อมูล
- pattern matching — ตรวจรูปแบบข้อมูลแบบกระชับ
- เข้าใจ value type vs reference type (ชนิดเก็บค่า vs ชนิดอ้างอิง), nullable (ค่าที่เป็น null ได้), span — ลึกพอที่จะสังเกตปัญหา performance (สมรรถนะ) พื้นฐาน เช่น allocation (การจองหน่วยความจำ) เกินจำเป็น หรือ boxing (การแปลง value type เป็น object) ที่ทำให้โปรแกรมช้าลง (การ debug performance เชิงลึกเกินขอบเขตหนังสือเล่มนี้)
- พร้อมขึ้น ASP.NET Core (dotnet/)
ออกแบบให้ใคร
- ✅ ไม่เคยเขียน C# มาก่อน
- ✅ มาจาก Java/TypeScript/Go อยากเทียบ
- ❌ Senior C# (เล่มนี้ปูพื้นฐาน — ใช้ Microsoft Docs จะลึกกว่า)
👤 สำหรับคนเคยเขียน Java (ไม่เคยก็ข้ามได้)
หนังสือนี้เริ่มจากศูนย์ได้ ไม่ต้องรู้ Java มาก่อน — แต่บางจุดจะเทียบ C# กับ Java/JVM เพราะช่วยคนที่ย้ายภาษาให้เข้าใจเร็ว ถ้าคุณไม่เคยเขียน Java/JVM ตรงไหนเทียบแล้วงง ข้ามได้เลย ไม่ใช่สาระสำคัญ — แต่ละเรื่องจะอธิบายแบบยืนได้ด้วยตัวเองก่อนแล้วค่อยเทียบ
โครงสร้าง
หนังสือเรียงจากพื้นฐาน ไปจนถึงขั้นสูง — เริ่มจากการตั้งค่าและ syntax (ไวยากรณ์ภาษา) แล้วไล่สู่ OOP, collections (โครงสร้างเก็บข้อมูลหลายค่า), async (การทำงานแบบไม่บล็อกรอ) และฟีเจอร์ใหม่ของ C# แนะนำอ่านตามลำดับสำหรับมือใหม่:
- 00 — C# + .NET คืออะไร
- 01 — Setup + Hello World
- 02 — Variables + Types (value vs reference, nullable, var)
- 03 — Control Flow (if, switch expression, pattern matching)
- 04 — Methods + Scope (ref/out/in, params, local function)
- 05 — OOP Fundamentals (class, property, indexer)
- 06 — Inheritance + Polymorphism (interface, abstract, sealed)
- 07 — Collections + Generics (List, Dictionary, constraint)
- 08 — Exception Handling
- 09 — Lambda + Delegate + LINQ
- 10 — Modern C# (record, pattern, nullable ref, primary ctor)
- 11 — Async + Tasks + Cancellation
- 12 — IO + Files + Streams + JSON + HTTP
จบแล้วต่อ → dotnet/ สำหรับ ASP.NET Core