Sự khác biệt giữa Const và ReadOnly trong C # là gì?


Biến chỉ đọc và biến hằng là gì? Chúng khác nhau như thế nào? Khi nào chúng ta nên sử dụng hằng số trên Chỉ đọc? const và readonly, là những từ khóa rất phổ biến và khá khó hiểu khi bạn đặt chúng với nhau. Hãy thử tìm hiểu và hiểu sự khác biệt là gì.

bl

Để hiểu nó tốt hơn, trước tiên hãy hiểu biến số không đổi là gì? - Biến có giá trị không thể thay đổi trong suốt quá trình thực thi chương trình. Chúng ta xác định biến hằng số bằng cách sử dụng từ khóa const và chỉ đọc như được hiển thị trong đoạn mã bên dưới.

1

2

3

4

// Defining Constant

public const int maxLength= 100;

// Defining Read Only

public readonly double ratio = 1.4;

 

 

Như đã nói, với đoạn mã trên, cả hai từ khóa đang hoạt động chính xác giống nhau. Nếu chúng ta khai báo biến thành viên với const hoặc chỉ đọc, chúng ta không thể thay đổi nó thêm, có nghĩa là giá trị của maxLength và tỷ lệ sẽ không thay đổi. Trong trường hợp bạn muốn gán bất kỳ giá trị nào khác cho các biến này, bạn sẽ gặp lỗi.

Vậy, sự khác biệt là gì? Sự khác biệt là khi chúng ta gán các giá trị cho các biến không đổi, Const là một biến không đổi Compile Time, trong khi, chỉ đọc là một biến cố định Runtime.

Để làm cho nó đơn giản hơn, việc gán const phải được thực hiện trong suốt quá trình khai báo. Chúng ta không thể làm điều đó ở bất cứ nơi nào khác.

1

public const int maxLength= 100;

Khi được chỉ định, điều này được khắc phục và không thể sửa đổi thêm trong khi ứng dụng của bạn đang chạy. Bạn có thể kiểm tra việc gán compile time trong IL cũng như sử dụng Công cụ ILDASM..

 

 

Ở đây bạn cũng có thể thấy, Const là biến tĩnh tiềm ẩn, vì vậy bạn có thể truy cập nó bằng ClassName.Variable, tại Program.MaxLength
Mặt khác, việc khai báo và khởi tạo các giá trị có thể được thực hiện ở những nơi khác nhau cho biến Read Only. Nó có thể được khởi tạo hoặc trong quá trình khai báo biến hoặc trong constructor của cùng một lớp.

1

2

3

4

5

6

7

8

// Declaration of Read Only

public readonly double ratio;

// Constructor

public Program()

{

// Initilze of Read-Only Variables

ratio = 1.4;

}

Trong trường hợp read only, nếu bạn muốn gán một giá trị từ đầu vào của người dùng hoặc từ các tệp cấu hình, bạn có thể làm như vậy bên trong hàm tạo - trong khi khởi tạo.

Sử dụng hằng số khi các giá trị được cố định tuyệt đối và không có thay đổi, như maxlength, sử dụng chỉ đọc khi giá trị của các biến đến từ đầu vào của người dùng hoặc tệp cấu hình hoặc từ biến khác

Tóm lại, const là hằng số biên dịch và phải được khởi tạo trong thời gian khai báo và read only là hằng số runtime mà khởi tạo chỉ đọc có thể được thực hiện trong quá trình khai báo cũng như trong hàm khởi tạo chung của cùng một lớp.

Hỗ trợ trực tuyến