Đây là một câu hỏi cũ, nhưng Ill cho hai xu của tôi không ít hơn. const và công cộng là một sự kết hợp nguy hiểm và thường bỏ lỡ sử dụng. Điều này là do thực tế rằng nếu một trường const công khai được thay đổi trong thư viện thì thư viện không thể thay thế mà tất cả các máy khách của thư viện đó cần phải được xây dựng lại vì nó sẽ sao chép giá trị thực trong máy khách chứ không phải tham chiếu với giá trị đó.
Một lựa chọn là để làm một cái gì đó như thế này nếu bạn thực sự muốn có một cộng đồng "liên tục":
public static class Constants
{
public static readonly bool LOG_ENABLED = false;
}
Tuy nhiên điều này cũng không thành trong các thành phần thư viện WinRT
'WindowsRuntimeComponent1.Constants' contains externally visible field 'System.Boolean WindowsRuntimeComponent1.Constants.LOG_ENABLED'. Fields can be exposed only by structures.
Một cách khác mà không thực sự công việc là
public static class Constants
{
public static bool LOG_ENABLED { get { return false; } }
}
Tôi không chắc chắn lý do tại sao không thể ha có một const công khai hoặc chỉ đọc trong một thư viện thành phần WinRT vì nó có thể trong một thư viện lớp bình thường.
Sau khi đọc, có vẻ như các trường công cộng bị giới hạn trong cấu trúc và cấu trúc CHỈ có thể chứa các trường công khai.
Giống như bạn đã nói trong phần nhận xét, việc thay đổi nó thành nội bộ là một lựa chọn tốt nếu bạn không sử dụng nó từ một nguồn bên ngoài.
Làm việc đó: Làm cho nội bộ thay vì công khai, tôi nghĩ là trình sửa đổi hiển thị chính xác trong trường hợp này. – csaam
Một vài lời khuyên: Trong các hằng số .NET và C# không phải là chữ hoa (vì nó không phải là điều tiền xử lý), chúng nên sử dụng TitleCase. Thứ hai, bạn nên kiểm soát việc ghi nhật ký bằng tham số cấu hình, không phải hằng số. – Dai
Một chút cũ, nhưng bạn nên đăng giải pháp của mình làm câu trả lời và chấp nhận nó để mọi người có thể thấy câu hỏi này được trả lời. – BlargleMonster