intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Các trường chỉ đọc ( Readonly fields)

Chia sẻ: Nguyen Uyen | Ngày: | Loại File: PDF | Số trang:3

74
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Hằng là một biến mà chứa một giá trị không thay đổi. Trong C# khái niệm hằng cũng giống như mọi ngôn ngữ khác. Tuy nhiên, hằng thì không cần thiết dùng trong mọi trường hợp. Trong một số trường hợp, bạn có một số biến không bị thay đổi nhưng giá trị của nó chỉ được khởi tạo khi chương trình thực thi. C# hỗ trợ một kiểu biến khác có lợi hơn trong trường hợp này là: các trường chỉ đọc. Từ khoá readonly thì linh động hơn từ khoá const. Bởi vì bạn có thể khởi...

Chủ đề:
Lưu

Nội dung Text: Các trường chỉ đọc ( Readonly fields)

  1. Các trường chỉ đọc ( Readonly fields) Hằng là một biến mà chứa một giá trị không thay đổi. Trong C# khái niệm hằng cũng giống như mọi ngôn ngữ khác. Tuy nhiên, hằng thì không cần thiết dùng trong mọi trường hợp. Trong một số trường hợp, bạn có một số biến không bị thay đổi nhưng giá trị của nó chỉ được khởi tạo khi chương trình thực thi. C# hỗ trợ một kiểu biến khác có lợi hơn trong trường hợp này là: các trường chỉ đọc. Từ khoá readonly thì linh động hơn từ khoá const. Bởi vì bạn có thể khởi tạo giá trị cho một trường chỉ đọc trong constructor. Và nó cho phép một trường chỉ đọc là một thể hiện(instance) hay một trường static có các giá trị khác nhau trong mỗi thể hiện của lớp đó. Nếu bạn muốn một trường chỉ đọc là static thì bạn phải khai báo tường minh.
  2. Ví dụ: chúng ta có một chương trình chỉnh sửa tài liệu, và chúng ta muốn hạn chế số tài liệu được sửa đồng thời. Nhưng bởi vì ta bán phần mềm đó và người sử dụng có thể nâng cấp bản của họ. Chúng ta không thể cố định số lượng lớn nhất trong mã nguồn. Chúng ta cần một trường để mô tả giá trị lớn nhất này. Trường này chỉ được đọc tại mỗi lúc chương trình được ném ra: public class DocumentEditor { public static readonly uint MaxDocuments; static DocumentEditor() { // code here will read in the value of the max no. of documents. // for the sake of argument, let's assume the result is 20 MaxDocuments = 20; } Trong ví dụ trên thì giá trị lớn nhất chỉ được cần được lưu trữ khi một thể hiện của chương trình thực thi. Và đó là lý do tại sao nó được khởi tạo trong một constructor tĩnh. Tình huống khác, nếu mọi tài liệu chúng ta chỉnh sửa có một ngày được tạo ra và chúng ta không muốn người sử dụng chỉnh sửa nó. Kiểu ngày thì được mô tả trong lớp system.Datetime
  3. public class Document { public readonly DateTime CreationDate; public Document() { // read in creation date from file. Assume result is 1 Jan 2002 // but in general this can be different for different instances // of the class CreationDate = new DateTime(2002, 1, 1); } } Từ hai ví dụ trên ta thấy CreationDate and MaxDocuments là các trường chỉ đọc và nó không thể được gán giá trị bên ngoài constructor.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2