Class là kiểu thiết yếu trong C#. Có thể xem class như bản thiết kế (blueprint) cho các object liên quan đến miền vấn đề. Là template tạo ra object, định nghĩa cấu trúc và hành vi chung cho tập object tạo từ class đó. Nôm na: class là khuôn cắt bánh, object là chiếc bánh.
Class cho phép encapsulation (đóng gói) - khái niệm cốt lõi OOP: gom dữ liệu và thao tác trên dữ liệu vào một nơi, cung cấp API đơn giản cho người dùng object. Class ẩn chi tiết không liên quan khỏi class khác.
Tạo Class
Dùng từ khóa class theo sau tên class:
// User.cs
public class User
{
private string name;
private int salary;
public void Promote()
{
salary += 1000;
}
}
Ví dụ: User đại diện người dùng. Encapsulation 2 field: name, salary. Method Promote() tăng lương.
Access Modifier (Chỉ định truy cập)
Mỗi class có access modifier kiểm soát visibility:
| Modifier | Mô tả |
|---|---|
| public | Truy cập không giới hạn |
| protected | Giới hạn cho lớp dẫn xuất |
| internal | Giới hạn trong assembly |
| protected internal | Assembly hoặc lớp dẫn xuất |
| private | Không truy cập từ bên ngoài |
Tạo Instance
Dùng từ khóa new. Toán tử new tính byte cần thiết, cấp phát bộ nhớ, trả về con trỏ (reference) đến object mới.
var alice = new User();
var bob = new User();
Reference lưu trong biến bên trái =. alice, bob giữ reference đến object.

Quy ước đặt tên class: PascalCase (viết hoa chữ cái đầu mỗi từ: StringBuilder, UserController). Thông thường 1 class = 1 file trùng tên.
Constructor
Object mới thường cần thông tin khởi tạo. Constructor dùng để khởi tạo dữ liệu class.
public class User
{
private string name;
private int salary;
public User(string name, int salary)
{
this.name = name;
this.salary = salary;
}
public void Promote() => salary += 1000;
}
Tạo instance với constructor:
var alice = new User("Alice", 50000);
var bob = new User("Bob", 45000);
Có thể nhiều constructor (overload). Ví dụ constructor chỉ nhận name, gán lương mặc định:
public User(string name)
{
this.name = name;
this.salary = 50000;
}
Ví dụ hoàn chỉnh
using System;
class Program
{
static void Main()
{
var alice = new User();
alice.Print();
var bob = new User();
bob.Print();
var chris = new User("Chris", 50000);
chris.Print();
var debs = new User("Debs", 45000);
debs.Print();
var scott = new User("Scott");
scott.Print();
}
}
public class User
{
private string name;
private int salary;
public User() { }
public User(string name) { this.name = name; this.salary = 50000; }
public User(string name, int salary) { this.name = name; this.salary = salary; }
public void Promote() => salary += 1000;
public void Print() => Console.WriteLine($"{name}: {salary}");
}
Kết quả đầu ra
: 0
: 0
Chris: 50000
Debs: 45000
Scott: 50000