C# - C Sharp: Property
C# sử dụng một tính năng gọi là Property để cho phép bạn có thể thiết lập và lấy các giá trị của các trường của lớp mà không quan tâm tới bổ từ truy cập của những trường đó là gì.
Property cho phép bạn kiểm tra giá trị trước khi gán nó cho trường của lớp.
Property cho phép bạn bảo vệ một trường của lớp bằng cách đọc hoặc ghi dữ liệu vào trường thông qua property đó.
Property có thể kiểm tra dữ liệu trước khi cho phép bạn thay đổi chúng và thực hiện những công việc cần thiết thông qua những thay đổi đó.
Property hỗ trợ đặc tính trừu tượng và đóng gói.
Cú pháp tạo property:
{
//Thân của property
}
Ví dụ:
{
set
{
......
}
{
......
}
}
Bộ truy cập get và set
Các bộ truy cập này sẽ cho phép bạn đọc và gán giá trị cho một trường của lớp bằng cách thực hiện hai phương thức đặc biệt trong Property.
Bộ truy cập get dùng để đọc giá trị và nó được kích hoạt khi property được tham chiếu tới.
Bộ truy cập set dùng để ghi dữ liệu cho một trường của lớp thông qua phép toán gán và từ khóa value.
Phân loại Property
Property chỉ đọc
Trong property chỉ có bộ truy cập get.
Ví dụ:
public string Name
{
get
{
return name;
}
}
Property chỉ ghi
Trong property chỉ có bộ truy cập set.
Ví dụ:
public string Name
{
set
{
name = value;
}
}
Property đọc được và ghi được dữ liệu
Trong property có cả bộ truy cập get và set.
Ví dụ:
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
So sánh Property và Field
Property |
Field |
---|---|
Property là thành phần dữ liệu có thể gán và truy xuất giá trị. |
Field là thành phần dữ liệu dùng để lưu trữ giá trị. |
Property không phải là biến và như vậy nó không sử dụng được các từ khóa ref và out |
Field có thể coi là biến của lớp nên nó có thể sử dụng được các từ khóa ref và out. |
Property được định nghĩa như là một tập lệnh có thể thực thi. |
Field được định nghĩa bằng một câu lệnh đơn. |
Property được định nghĩa với các bộ truy cập get và set. |
Field không được định nghĩa với các bộ truy cập. |
Property có thể thực hiện các hành động tùy chỉnh trong quá trình thay đổi giá trị của field. |
Field không có khả năng thực hiện các hành động tùy chỉnh. |
So sánh giữa Property và Method
Property | Method |
---|---|
Property đại diện cho các đặc điểm của một đối tượng. | Method đại diện cho các hành vi của một đối tượng. |
Property chứa hai phương thức mà sẽ tự động được gọi mà không cần có tên. | Method được gọi bằng cách xác định tên các phương thức và phải thông qua đối tượng của lớp. |
Property không thể có tham số. | Method có thể không có hoặc có nhiều tham số. |
Property có thể được ghi đè nhưng không được tải chồng. | Method có thể được ghi đè và cũng có thể được tải chồng. |
Ví dụ: tạo một Property tên Amount public int Amount { get(){}; set(){}; } | Ví dụ: Tạo một Method tên Amount có hai đối số public int Amount (int numOne,int numTwo) { } |
Khác với VB trong đó các thủ tục get và set được định nghĩa như là những hàm riêng biệt, trong C# chúng được khai báo cùng nhau trong một khai báo thuộc tính. Trong VB bạn khai báo tường minh tham số cho thủ tục set và có thể chọn tên của nó, nhưng ngược lại trong C# tham số này hoàn toàn giả lập và luôn mang tên là value.
Thuộc tính Virtual và Abstract
C# cho phép bạn tạo một thuộc tính virtual hay abstract. Để khai báo một thuộc tính virtual, overriden hay abstract bạn chỉ cần thêm từ khoá đó trong lúc định nghĩa thuộc tính. Ví dụ để tạo một thuộc tính abstract thì cú pháp như sau:
{
get;
set;
}