Mục lục C#
Cơ bản
Điều khiển luồng
Hướng đối tượng
Xử lý lỗi
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- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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ố.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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ả.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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?.