Tôi có biến loại tham chiếu là readonly
, vì tham chiếu không bao giờ thay đổi, chỉ các thuộc tính của nó. Khi tôi cố gắng thêm các sửa đổi volatile
cho nó biên soạn cảnh báo tôi rằng nó sẽ không cho phép cả hai sửa đổi áp dụng cho cùng một biến. Nhưng tôi nghĩ tôi cần nó dễ bay hơi vì tôi không muốn có vấn đề về bộ nhớ đệm khi đọc các thuộc tính của nó. Tôi có thiếu gì không? Hoặc là trình biên dịch sai?Tại sao các công cụ sửa đổi chỉ đọc và dễ bay hơi được loại trừ lẫn nhau?
Cập nhật Như Martin đã nêu trong một trong các nhận xét dưới đây: Cả hai chỉ đọc và biến đổi dễ bay hơi chỉ áp dụng cho tham chiếu và không cho thuộc tính của đối tượng, trong trường hợp đối tượng kiểu tham chiếu. Đó là những gì tôi đã mất tích, do đó, trình biên dịch là đúng.
class C
{
readonly volatile string s; // error CS0678: 'C.s': a field cannot be both volatile and readonly
}
Trình biên dịch là [có thể sai] (http://stackoverflow.com/q/39004125/1149773) (mặc dù có thể không dành cho trường hợp cụ thể của bạn). – Douglas