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

7/7 แก้ไขเป็น

... อ่านเพิ่มเติมในฐานะที่เคยเริ่มต้นเรียนรู้และใช้งานภาษา 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 จะช่วยให้นักพัฒนาสามารถสร้างและบริหารโปรเจกต์ได้อย่างมีประสิทธิภาพและรวดเร็ว

1 ความคิดเห็น

รูปภาพของ Yesimjaoaye(เจ้าเอยเอง)
Yesimjaoaye(เจ้าเอยเอง)

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