Properties là tên một thành viên của lớp, cấu trúc, và giao diện. Biến thành viên và các phương thức trong một lớp hoặc cấu trúc được gọi là Fields. Còn properties là một phần mở rộng của fields và được truy cập bằng cách sử dụng cú pháp tương tự.
Properties không đặt tên cho địa điểm lưu trữ. Thay vào đó, chúng có accessors để đọc, viết, và tính toán giá trị của chúng.
Ví dụ, chúng ta có một lớp tên là Student, với fields riêng tư là tuổi, tên và mã. Chúng ta không thể trực tiếp truy cập vào các fields này từ bên ngoài phạm vi lớp, nhưng chúng ta có thể có các properties để truy cập vào các fields riêng tư này.
Accessors
Các accessor của một properties chứa các câu lệnh thực thi giúp trong get(đọc hoặc tính toan) hoặc set (ghi) properties. Việc khai báo accessor có thể chứa một get, một set, hoặc cả hai. Ví dụ:
// Khai báo property Code dạng chuỗi public string Code { get { return code; } set { code = value; } } // Khai báo một property Name dạng chuỗi public string Name { get { return name; } set { name = value; } } // Khai báo property Age dạng số nguyên public int Age { get { return age; } set { age = value; } }
Ví dụ sao cho thấy việc sử dụng properties:
using System; namespace oktot { class Student { private string code = "N.A"; private string name = "not known"; private int age = 0; // Khai báo property Code dạng chuỗi public string Code { get { return code; } set { code = value; } } // Khai báo một property Nam dạng chuỗi public string Name { get { return name; } set { name = value; } } // Khai báo property Age dạng số nguyên public int Age { get { return age; } set { age = value; } } public override string ToString() { return "Code = " + Code +", Name = " + Name + ", Age = " + Age; } } class ExampleDemo { public static void Main() { // Tạo một đối tượng Student Student s = new Student(); // Setting code, name and the age của student s.Code = "001"; s.Name = "Zara"; s.Age = 9; Console.WriteLine("Student Info: {0}", s); //Tăng tuổi s.Age += 1; Console.WriteLine("Student Info: {0}", s); Console.ReadKey(); } } }
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra các kết quả như sau:
Student Info: Code = 001, Name = Zara, Age = 9 Student Info: Code = 001, Name = Zara, Age = 10
Abstract Properties
Một lớp trừu tượng có thể có một properties trừu tượng, và phải được thực hiện trong lớp dẫn xuất. Chương trình sau đây minh họa điều này:
using System; namespace oktot { //Lớp trừu tượng public abstract class Person { //properties trừu tượng public abstract string Name { get; set; } public abstract int Age { get; set; } } class Student : Person //Kế thừa lớp trừu tượng { private string code = "N.A"; private string name = "N.A"; private int age = 0; //Thực hiện lại properties của lớp trừu tượng public string Code { get { return code; } set { code = value; } } public override string Name { get { return name; } set { name = value; } } public override int Age { get { return age; } set { age = value; } } public override string ToString() { return "Code = " + Code +", Name = " + Name + ", Age = " + Age; } } class ExampleDemo { public static void Main() { Student s = new Student(); s.Code = "001"; s.Name = "Zara"; s.Age = 9; Console.WriteLine("Student Info:- {0}", s); s.Age += 1; Console.WriteLine("Student Info:- {0}", s); Console.ReadKey(); } } }
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra các kết quả như sau:
Student Info: Code = 001, Name = Zara, Age = 9 Student Info: Code = 001, Name = Zara, Age = 10
Chúc bạn thành công!