Mục lục C#

Docs

C#

Ngôn ngữ của Unity. Học từ biến, vòng lặp tới class và interface, ví dụ nào cũng gắn với game.

Bắt đầu học
  1. 01Giới thiệu C#C# là gì, được dùng ở đâu (Unity, .NET, web, tool) và vì sao nên học C# thuần trước khi mở Unity để làm game.
  2. 02Cài đặt C# với .NET 8 và VS CodeCài .NET 8 SDK, VS Code và C# Dev Kit, tạo project bằng dotnet new console, chạy bằng dotnet run và sửa lỗi lệnh dotnet không nhận.
  3. 03Cú pháp C# cơ bảnCú pháp C# cơ bản: chương trình Hello World với top-level statements, dấu chấm phẩy, khối lệnh trong ngoặc nhọn và chuyện phân biệt chữ hoa chữ thường.
  4. 04Output và comment trong C#In ra màn hình trong C# với Console.WriteLine và Console.Write, khác nhau ở chỗ xuống dòng, cùng cách viết comment một dòng và nhiều dòng.
  5. 05Biến trong C#Biến là gì, cách khai báo biến trong C#, đặt tên sao cho đúng và vì sao C# bắt bạn nói rõ kiểu dữ liệu.
  6. 06Kiểu dữ liệu trong C#Các kiểu dữ liệu cơ bản trong C#: int, long, float, double, decimal, bool, char, string, hậu tố f và m, kèm bảng tóm tắt dễ tra.
  7. 07Ép kiểu trong C#Ép kiểu trong C#: chuyển ngầm và tường minh giữa các kiểu số, vì sao mất phần thập phân, cách dùng Convert và int.Parse để đổi chuỗi thành số.
  8. 08Nhập dữ liệu từ bàn phím trong C#Đọc dữ liệu người dùng gõ vào bằng Console.ReadLine trong C#, đổi sang số với int.Parse hoặc int.TryParse và tránh lỗi FormatException.
  9. 09Toán tử trong C#Các toán tử trong C#: số học, gán, so sánh, logic, tăng giảm ++ và --, cùng cái bẫy chia số nguyên khiến 7 / 2 ra 3.
  10. 10Math và Random trong C#Dùng lớp Math trong C# (Max, Min, Abs, Sqrt, Pow, Round, Clamp) và Random.Shared.Next để tính sát thương, giới hạn máu và cơ hội chí mạng.
  11. 11Chuỗi (string) trong C#Làm việc với chuỗi trong C#: nối chuỗi, chuỗi nội suy $"", Length, ToUpper, Contains, Substring và vì sao chuỗi không sửa tại chỗ được.
  12. 12Kiểu bool trong C#Kiểu bool trong C#: giá trị true và false, biểu thức so sánh trả về bool, và cách dùng bool làm cờ trạng thái như isAlive, hasKey trong game.
  13. 13Câu lệnh if else trong C#Rẽ nhánh chương trình với if, else if, else và toán tử ba ngôi trong C#, kèm lý do vì sao thứ tự các điều kiện quyết định kết quả.
  14. 14Câu lệnh switch trong C#Dùng switch statement và switch expression trong C# để chọn nhánh theo giá trị, gộp nhiều case và hiểu vì sao C# không cho rơi xuống case sau.
  15. 15Vòng lặp while trong C#Vòng lặp while và do while trong C#: lặp khi điều kiện còn đúng, khác nhau ở lần chạy đầu tiên, và cách tránh vòng lặp vô hạn làm treo chương trình.
  16. 16Vòng lặp for trong C#Vòng lặp for trong C#: ba phần khởi tạo, điều kiện, bước nhảy, cách đếm ngược, bước nhảy khác 1 và lỗi lệch một (off-by-one) người mới hay mắc.
  17. 17Break và continue trong C#Dùng break để thoát vòng lặp sớm và continue để bỏ qua một lượt trong C#, kèm ví dụ tìm vật phẩm, bỏ qua quái đã chết và lỗi hay gặp.
  18. 18Mảng (array) trong C#Mảng một chiều trong C#: cách khai báo, đọc phần tử bằng index bắt đầu từ 0, dùng Length và tránh lỗi IndexOutOfRangeException.
  19. 19Vòng lặp foreach trong C#Dùng foreach để duyệt mảng và List trong C#, khi nào nên dùng thay cho for, và vì sao sửa List khi đang foreach gây InvalidOperationException.
  20. 20List trong C#List<T> trong C# là danh sách tự co giãn: thêm bằng Add, xoá bằng Remove, đếm bằng Count, kiểm tra bằng Contains, qua ví dụ kho đồ người chơi.
  21. 21Dictionary trong C#Dictionary<TKey,TValue> trong C# lưu dữ liệu theo cặp khoá và giá trị: thêm, đọc, TryGetValue và cách tránh KeyNotFoundException qua ví dụ bảng giá shop.
  22. 22Hàm (method) trong C#Hàm trong C# là gì, cách khai báo và gọi hàm, trả kết quả bằng return, hàm void, và vì sao hàm viết ở top-level statements là local function.
  23. 23Tham số của hàm trong C#Cách truyền dữ liệu vào hàm trong C#: tham số, giá trị mặc định, named arguments, và khác biệt giữa truyền giá trị với ref, out ở mức cơ bản.
  24. 24Nạp chồng hàm (overloading) trong C#Nạp chồng hàm trong C#: nhiều hàm cùng tên khác tham số, quy tắc C# chọn hàm nào, và vì sao local function ở top-level không nạp chồng được.
  25. 25Class và object trong C#Class trong C# là bản thiết kế, object là thứ được tạo ra từ bản thiết kế đó. Học cách khai báo class, field, method và tạo object bằng new.
  26. 26Constructor trong C#Constructor trong C# là hàm chạy khi tạo object bằng new. Học cách viết constructor, dùng this để phân biệt field với tham số, và viết nhiều constructor.
  27. 27Access modifier trong C#: public, private, protectedAccess modifier trong C# quyết định ai được đụng vào field và method: public, private, protected, và vì sao nên giấu field để dữ liệu game không bị sửa bậy.
  28. 28Property trong C#: get và setProperty trong C# thay cho cặp hàm GetX, SetX: viết get/set có kiểm tra, auto-property, property chỉ đọc, và cách hiện biến private lên Unity Inspector.
  29. 29Kế thừa trong C#Kế thừa trong C#: class con nhận lại field và method của class cha, gọi base, dùng virtual và override để Slime và Boss tấn công theo kiểu riêng.
  30. 30Interface trong C#Interface trong C# là bản cam kết một class làm được việc gì. Học qua ví dụ IDamageable, cách một class có nhiều interface và dùng is để kiểm tra.
  31. 31Enum trong C#Enum trong C# là kiểu có một nhóm giá trị đặt tên sẵn. Dùng enum cho trạng thái nhân vật, kết hợp với switch, và ép enum sang số nguyên.
  32. 32Try catch trong C#: xử lý exceptionDùng try, catch, finally trong C# để xử lý exception: bắt đúng loại lỗi cụ thể, dọn dẹp bằng finally, và vì sao không nên nuốt lỗi bằng catch rỗng.
  33. 33Null trong C#: toán tử ?., ?? và kiểu int?Null trong C# nghĩa là chưa trỏ tới object nào. Hiểu NullReferenceException, dùng toán tử ?. và ?? để xử lý gọn, và kiểu nullable như int?.