50 สิ่งที่ต้องรู้เกี่ยวกับ C# ภาษา OOP ของ Microsoft ใช้งาน .NET, เกม Unity,
50 สิ่งที่ต้องรู้เกี่ยวกับ C#
C# (อ่าน C Sharp) คือภาษา OOP ของ Microsoft ใช้งาน .NET, เกม Unity, Windows Desktop และ Enterprise Backend
Part 1 พื้นฐานและประวัติ
1. ถูกสร้างปี 2000
Anders Hejlsberg ผู้สร้าง TypeScript และ Delphi ออกแบบ C# ขึ้นที่ Microsoft
2. C# ไม่ใช่ C++
แม้ชื่อคล้าย C แต่ C# รันบน .NET runtime ไม่ compile เป็น machine code ตรง ๆ ใกล้เคียง Java มากกว่า
3. .NET Framework vs .NET Modern
.NET Framework เฉพาะ Windows (Legacy) ส่วน .NET 6/7/8 เป็น Cross-platform, Open Source รันบน Linux, macOS, Windows
4. CLR (Common Language Runtime)
Virtual Machine ของ .NET รัน Intermediate Language (IL) คล้าย JVM ของ Java
5. Open Source ตั้งแต่ปี 2014
Microsoft เปิด C# และ .NET เป็น open source ปัจจุบันรองรับ Linux/Mac เต็มที่
Part 2 Variables และ Data Types
6. Built-in Types
int, double, string, bool, char ครอบคลุมงานทั่วไป double มี suffix m สำหรับ decimal precision
7. var Keyword
var name = "John" Compiler เดา type ได้ ไม่ต้องเขียน type ตรง ๆ ตัวสั้นลง
8. Nullable Types
int? age = null รับ null ได้ C# 8+ มี nullable reference types ช่วยป้องกัน NullReferenceException
9. Value vs Reference Types
Value (int, struct, enum) เก็บค่าตรง Reference (class, string, array) เก็บ reference
10. Constants
const (compile-time) readonly (runtime) ใช้สำหรับค่าที่ไม่เปลี่ยน
Part 3 OOP
11. Classes
class Dog มี Property, Constructor, Method สร้าง instance ด้วย new Dog() พื้นฐาน OOP
12. Properties
Name { get; set; } สะดวกกว่า getter/setter ของ Java auto-implement ได้ มี expression body =>
13. Inheritance
class Dog : Animal สืบทอด ใช้ virtual + override แทน final/sealed ของ Java
14. Interfaces
IComparable<T> ขึ้นต้นด้วย I แสดง capability ของ class คล้าย Java
15. Abstract Classes และ sealed
abstract = ต้อง override sealed = ห้ามสืบทอด ตรงข้ามกัน
Part 4 Collections
16. List, Dictionary, HashSet
List<T> เหมือน ArrayList Dictionary<K,V> เหมือน HashMap HashSet<T> เหมือน Set ของ Java
17. LINQ
Language Integrated Query Where, OrderBy, Select เขียน query แบบ functional ทรงพลังกว่า Stream API ของ Java
18. Query Syntax (LINQ)
from u in users where ... orderby ... select รูปแบบคล้าย SQL embedded ในภาษา
19. IEnumerable vs IQueryable
IEnumerable in-memory IQueryable defer execution translate เป็น SQL ใน Entity Framework
20. Tuples
var (name, age) = GetPerson() return หลายค่าได้ deconstruction สะดวก
Part 5 Generics
21. Generic Classes
Box<T> รับ type ได้หลายแบบ คล้าย Java Generics แต่ runtime รู้ type จริง ๆ ไม่ erase
22. Generic Constraints
where T : IComparable<T> จำกัด type ที่รับได้ ใส่หลายเงื่อนไขได้
Part 6 Async / Await
23. async/await
C# เป็นภาษาแรกที่ทำ async/await มาตรฐาน เขียน asynchronous code ให้ดูเหมือน synchronous
24. Task vs Task<T>
Task ไม่ return ค่า Task<T> return ค่า ValueTask optimized สำหรับ sync path
25. CancellationToken
ยกเลิก task ได้ ส่ง token เข้าไปใน method แต่ละ method พิจารณา cancel
Part 7 Modern Features
26. Records (C# 9+)
record Person(string Name, int Age) immutable, value equality, deconstruction ออกมาเลย
27. Pattern Matching
switch expression รองรับ pattern เช็ค type, deconstruct, condition รวมในที่เดียว
28. Top-level Statements (C# 9+)
ไม่ต้องเขียน Main method ใน Program.cs เขียน code ลงไปได้เลย เหมาะกับโปรเจกต์เล็ก
29. String Interpolation
$"Hello {name}" แทรกตัวแปรในข้อความ raw string literal (C# 11+) สำหรับ multi-line
30. nullable Reference Types (C# 8+)
เปิด #nullable enable compiler จะเตือนเมื่อใช้ null กับ reference type โดยไม่ตั้งใจ
Part 8 Exception Handling
31. try-catch-finally
ครอบ code ที่อาจ error catch ตาม exception type finally ทำทุกครั้งไม่ว่า error หรือไม่
32. using Statement
using var file = ... auto Dispose ตอนจบ scope ป้องกัน resource leak ได้ดี
Part 9 Delegates และ Events
33. Delegates
Function pointer ของ C# กำหนด signature ของ function แล้ว assign function เข้าได้
34. Func, Action, Predicate
Func<T,TResult> return ค่า Action<T> ไม่ return Predicate<T> return bool ใช้แทน custom delegate ได้
35. Events
Observer pattern เป็น built-in subscribe ด้วย += publish เมื่อ event เกิด
Part 10 Frameworks และ Ecosystem
36. ASP.NET Core
Framework สร้าง Web API, Microservices fast, cross-platform Minimal API เขียน endpoint สั้นมาก
37. Entity Framework Core
ORM ของ .NET code-first migrations, LINQ to SQL จัดการ Database โดยไม่ต้องเขียน SQL ตรง ๆ
38. Blazor
สร้าง Web UI ด้วย C# แทน JavaScript ทำ WebAssembly หรือ Server-side ได้
39. MAUI (Multi-platform App UI)
Framework สร้าง Desktop + Mobile (iOS, Android, Windows, Mac) จาก codebase เดียว
40. Unity
Game Engine ใช้ C# เป็นภาษาหลัก เกมแอป Mobile, Console, VR/AR ส่วนใหญ่ใช้ Unity
Part 11 .NET Ecosystem
41. NuGet
Package manager ของ .NET เหมือน npm, pip ติดตั้ง library ผ่าน dotnet add package
42. dotnet CLI
คำสั่ง dotnet new, build, run, test ใช้สร้างและจัดการโปรเจกต์ผ่าน command line
43. Visual Studio vs Rider vs VS Code
Visual Studio เต็มสุด (Windows/Mac) Rider ของ JetBrains พรีเมียม VS Code + C# DevKit ฟรี lightweight
Part 12 Best Practices
44. Naming Conventions
Class/Method/Property PascalCase Variable/Parameter camelCase Interface ขึ้นต้น I (IUserService)
45. async ทั้ง chain
อย่าเรียก .Result หรือ .Wait() บน Task ทำให้ deadlock ได้ ใช้ await ตลอด chain
46. Dispose Pattern
Class ที่ใช้ unmanaged resource (file, socket, DB) ต้อง implement IDisposable และเรียก Dispose()
47. SOLID + DI
C# มี Dependency Injection built-in ใน ASP.NET Core ใช้ DI Container แทนการ new objects เอง
Part 13 เกร็ดน่ารู้
48. Stack Overflow ใช้ C#
เว็บ Stack Overflow ที่ developer ทุกคนใช้ สร้างด้วย ASP.NET (C#) เลย
49. Microsoft Office Add-ins
สร้าง add-in สำหรับ Excel, Word, PowerPoint ด้วย VSTO (C#)
50. C# คือ Java สำหรับ Microsoft
ออกแบบมาแข่ง Java โดยตรง แต่หลายคนบอกว่า C# ทันสมัยกว่า Java มาก (Records, Pattern Matching, async/await มาก่อน)
สรุป C# เป็นภาษาที่ทันสมัยและทรงพลัง เหมาะกับงาน Enterprise Backend, Game Dev (Unity), Desktop และ Cross-platform Apps ด้วย .NET ที่เป็น cross-platform แล้ว C# กลายเป็นทางเลือกที่ดีไม่แพ้ Java
#CSharp #DotNet #Coding #Programming #Backend
ในฐานะที่เคยเริ่มต้นเรียนรู้และใช้งานภาษา C# มาไม่น้อย ผมพบว่า C# เป็นภาษาที่ออกแบบมาอย่างครบเครื่องและเหมาะสำหรับการพัฒนาแอปที่หลากหลายจริงๆ โดยเฉพาะเมื่อรวมกับ .NET Ecosystem ที่ช่วยให้การพัฒนา Cross-platform เป็นเรื่องง่ายและยืดหยุ่น สิ่งหนึ่งที่โดดเด่นมากคือการสนับสนุน async/await ที่ทำให้เขียนโค้ดที่ทำงานแบบอะซิงโครนัสง่ายและอ่านเข้าใจเหมือนเขียนซิงโครนัส และในแง่ของการพัฒนาเกมผ่าน Unity ที่ใช้ C# เป็นหลัก ผมได้สัมผัสว่า C# ช่วยให้การจัดการกับ OOP และ event ต่างๆ เป็นไปอย่างราบรื่น ไม่ว่าจะเป็นการใช้งาน delegates และ events หรือ LINQ ที่ช่วยให้จัดการกับข้อมูลได้อย่างมีประสิทธิภาพ นอกจากนี้ การมีฟีเจอร์ใหม่ๆ เช่น Records ใน C# 9 ที่ช่วยให้สร้างข้อมูลแบบ immutable ได้สะดวก และ pattern matching ที่ช่วยลดบรรทัดโค้ดและเพิ่มความชัดเจนก็ทำให้ภาษา C# ทันสมัยและมีความสามารถสูง ผมยังเห็นว่าการที่ Microsoft ทำให้ C# และ .NET เป็น Open Source ตั้งแต่ปี 2014 นั้น เป็นการเปิดโอกาสให้ชุมชนนักพัฒนาร่วมกันพัฒนาและปรับปรุงภาษาอย่างต่อเนื่อง จึงทำให้ C# สามารถตอบโจทย์งาน backend, desktop และ mobile ได้สมบูรณ์พร้อม สำหรับผู้ที่สนใจเริ่มต้นใช้งาน C# แนะนำให้เริ่มจากการเข้าใจพื้นฐานอย่าง variables, data types และ OOP เช่น classes, inheritance และ interfaces จากนั้นค่อยๆ ลองฟีเจอร์ขั้นสูงอย่าง generics, async/await และ LINQ เพื่อเพิ่มประสิทธิภาพของโค้ด สุดท้าย การใช้ IDE อย่าง Visual Studio หรือ VS Code ร่วมกับเครื่องมืออย่าง NuGet และ dotnet CLI จะช่วยให้นักพัฒนาสามารถสร้างและบริหารโปรเจกต์ได้อย่างมีประสิทธิภาพและรวดเร็ว

ติดต่องานค่าา