Chủ Nhật , 25 Tháng Mười 2020
Trang chủ / HỌC LẬP TRÌNH / C# [C Sharp] / [Học lập trình] – C# – [Bài 26] (C# Properties) – Thuộc tính trong C#

[Học lập trình] – C# – [Bài 26] (C# Properties) – Thuộc tính trong C#

Thuộc tính trong C# (Get và Set)


Thuộc tính và đóng gói

Trước khi chúng ta bắt đầu giải thích về các thuộc tính, chúng ta cần có một số hiểu biết cơ bản về “Đóng gói – Encapsulation“.

Encapsulation nghĩa là ẩn các dữ liệu nhạy cảm khỏi người dùng. Để làm được việc này, chúng ta phải:

  • Khai báo các trường/biến là private
  • Cung cấp các phương thức public getpublic set, thông qua các thuộc tính, để truy xuất và cập nhật giá trị cho trường private

Các thuộc tính

Chúng ta đã biết các biến private chỉ có thể truy xuất bên trong cùng một lớp (lớp ngoài không thể truy xuất tới nó). Tuy nhiên, đôi khi chúng ta cần truy xuất tới chúng – và điều này có thể được thực hiện bằng cách sử dụng các thuộc tính.

Một thuộc tính giống như một sự kết hợp giữa một biến và một phương thức, và nó có hai phương thức: phương thức get và phương thức set:

Ví dụ

class Person
{
  private string name; // field

  public string Name   // property
  {
    get { return name; }   // get method
    set { name = value; }  // set method
  }
}

Giải thích ví dụ

Thuộc tính Name được liên kết với trường name. Một cách tốt là sử dụng cùng tên cho cả thuộc tính và trường private, nhưng với một ký tự đầu tiên viết hoa.

Phương thức get trả về giá trị của biến name.

Phương thức set gán một giá trị value cho biến name. Từ khóa value biểu diễn giá trị mà chúng ta gán cho thuộc tính.

Nếu chưa hiểu một cách đầy đủ, hãy xem ví dụ bên dưới đây.

Bây giờ chúng ta có thể sử dụng thuộc tính Name để truy xuất và cập nhật cho trường private của lớp Person:

Ví dụ

class Person
{
  private string name; // field
  public string Name   // property
  {
    get { return name; }
    set { name = value; }
  }
}

class Program
{
  static void Main(string[] args)
  {
    Person myObj = new Person();
    myObj.Name = "Liam";
    Console.WriteLine(myObj.Name);
  }
}

Kết quả là:

Liam

Chạy ví dụ »


Thuộc tính tự động

C# cũng cung cấp một cách để sử dụng các thuộc tính một cách tự động, chúng ta không cần phải định nghĩa trường cho thuộc tính, chỉ cần phải viết get và set bên trong thuộc tính.

Ví dụ sau sẽ tạo ra kết quả giống ví dụ ở trên. chỉ khác là mã nguồn sẽ ngắn gọn hơn:

Vs dụ

Sử dụng thuộc tính tự động:

class Person
{
  public string Name  // property
  { get; set; }
}

class Program
{
  static void Main(string[] args)
  {
    Person myObj = new Person();
    myObj.Name = "Liam";
    Console.WriteLine(myObj.Name);
  }
}

Kết quả là:

Liam

Chạy ví dụ »


Tại sao lại đóng gói?

  • Kiểm soát tốt hơn các thành phần của lớp(giảm khả năng chính bạn (hoặc người khác) là lộn xộn mã nguồn)
  • Các trường có thể là read-only (nếu chỉ sử dụng phương thức get), hoặc write-only (nếu chỉ sử dụng phương thức set)
  • Linh hoạt: Một lập trình viên có thể thay đổi một phần của mã nguồn mà không ảnh hưởng đến các phần khác
  • Tăng bảo mật dữ liệu

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *