Const fields, Readonly fields và Readonly Properties


Để có thể bảo vệ được dữ liệu trong C#, chúng ta có thể sử dụng nhiều phương pháp khác nhau. Tùy vào mục đích và mức độ bảo vệ dữ liệu mà chúng ta sẽ phải lựa chọn chính xác cách mà mình mong muốn. Trong bài hôm nay, chúng ta sẽ cùng nhau tìm hiểu về một số phương pháp bảo vệ thông tin.

  1. Const
    Từ khóa const khi được sử dụng cho một biến hoặc cho một dữ liệu thành viên thì biến hay thành viên này sẽ không thể nào có thể thay đổi giá trị trong suốt thời gian chương trình hoạt động. Một ví dụ rõ ràng nhất là giá trị của số Pi (3.1415), giá trị này luôn luôn là như vậy  (và hàng triệu năm sau nó vẫn là như vậy), và chúng ta phải chắc chắn rằng nó không thể bị thay đổi do bất kỳ một tác nhân vô tình hay cố ý nào đó. Const chính là lựa chọn hoàn hảo đối với những trường hợp như thế này.
    Một lưu ý khi sử dụng const là chúng ta bắt buộc phải chỉ định ra giá trị mà biến const đó sẽ lưu trữ trong suốt chương trình ngay khi khai báo. Ví dụ:
    const int a; //không hợp lệ, phải có giá trị gán cho a khi khai báo
    const string b = "Hello"; //Hợp lệ, giá trị được gán cho b khi khai báo
     
    
    Một khi đã được khai báo xong, mọi cố gắng nhằm thay đổi giá trị của biến này đều phát sinh lỗi. Ví dụ
    const int a = 5; //a là hằng mang giá trị 5
    a = 10; //lỗi
  2. Readonly Field

    Nhiều lúc, chúng ta muốn giá trị của một biến nào đó sẽ không thay đổi trong thời gian chương trình thực thi, nhưng giá trị khởi đầu lại chỉ được xác định khi chương trình chạy (không biết được giá trị này lúc khai báo). Giả sử một trường hợp là bạn muốn chương trình của chúng ta sẽ có một biến dùng để đánh dấu thời điểm chương trình khởi động và biến này ,tất nhiên, là không thể nào thay đổi trong suốt quá trình hoạt động của ứng dụng. Từ khóa const không cho phép ta thực hiện được điều đó. Vì vậy, chúng ta sẽ sử dụng readonly field để giải quyết được vấn đề này.
    Readonly field là một biến lưu trữ đặc biệt của đối tượng. Nó cho phép chúng ta gán giá trị cho nó “chỉ 1 lần duy nhất” khi chương trình được thực thi. Mọi cố gắng thay đổi giá trị sau lần đầu tiên đều được xem là bất hợp lệ và sẽ phát sinh lỗi. Ví dụ:

    readonly int a; //hợp lệ
    a = 10; //OK, đây là lần đầu tiên nên a mang giá trị 10
    a = 5; //lỗi, giá trị của a đã được gán và không thể bị thay đổi

    Một điều cần lưu ý là từ khóa readonly chỉ có thể được áp dụng cho một field trong một lớp chứ không thể nào được sử dụng trong một hàm (tương tự như các từ khóa public, private…)

     

  3. ReadOnly Property

    Chi tiết về phương pháp này đã được trình bày trong bài: Readonly – Writeonly Properties

Tác giả: xuanchien

Tran Xuan Chien. Japan Advanced Institute of Science and Technology - Japan. Senior Developer - NUS Technology.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s