Lập trình hướng đối tượng C#

Property và tính đóng gói trong C#

Trong bài học này, bạn sẽ dùng property có kiểm tra dữ liệu để bảo vệ đối tượng khỏi những giá trị không hợp lệ.

Giới thiệu

Tính đóng gói (encapsulation) nghĩa là giữ dữ liệu bên trong đối tượng và chỉ cho phép thay đổi qua những cách đã được kiểm soát. Trong C#, property cho phép bạn viết logic kiểm tra ngay khi gán giá trị, trong khi nơi sử dụng vẫn dùng cú pháp đơn giản như với một biến thông thường.

Trường _price được khai báo private nên bên ngoài không truy cập trực tiếp được. Property Price đọc và ghi qua trường này, trong đó phần set chỉ chấp nhận giá trị không âm và ném ra ArgumentOutOfRangeException nếu giá bị âm. Nhờ vậy một Product không bao giờ có giá sai, và giá trị 19.95 được in ra bình thường.

Ví dụ C# chạy được

C#
Chạy code →
Program.cs
using System;

class Product
{
    private decimal _price;
    public decimal Price
    {
        get => _price;
        set => _price = value >= 0 ? value : throw new ArgumentOutOfRangeException();
    }
}

class Program
{
    static void Main()
    {
        var product = new Product { Price = 19.95m };
        Console.WriteLine(product.Price);
    }
}
Kết quả khi chạy
19.95

Luyện tập với trình gỡ lỗi

Đặt breakpoint ở một phép gán hoặc điều kiện quan trọng, bấm Debug và xem giá trị các biến cục bộ (local variable) trước khi bước sang dòng tiếp theo.

Luyện tập với thử thách

Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.

Tất cả thử thách