2011-09-08 5 views
18

Có cách nào để sử dụng một cái gì đó như thế này:Tiếp nhận 'Biểu hiện được phân công phải được liên tục' khi nó là

private const int MaxTextLength = "Text i want to use".Length; 

Tôi nghĩ rằng nó sẽ dễ đọc hơn và ít bị lỗi hơn là sử dụng một cái gì đó như:

private const int MaxTextLength = 18; 

Có cách nào để có độ dài của văn bản là nguồn cho biến không đổi không?

+9

"biến cố định"? – BoltClock

Trả lời

23
private readonly static int MaxTextLength = "Text i want to use".Length; 
12

Sử dụng static readonly thay vì const.

Constants phải thời gian biên dịch hằng

+1

Nhưng biến chỉ đọc tĩnh không hoạt động trong trường hợp câu lệnh. – MSTdev

5

Thật không may, nếu bạn đang sử dụng const từ khóa giá trị ở phía bên phải của '=' phải là một hằng số thời gian biên dịch. Sử dụng một chuỗi "" .length yêu cầu mã .NET để thực thi chỉ có thể xảy ra khi ứng dụng đang chạy, không phải trong thời gian biên dịch.

Bạn có thể xem xét việc tạo trường chỉ đọc chứ không phải là một const.

0

Không chắc lý do tại sao bạn muốn làm điều này nhưng làm thế nào về ...

private const string MaxText = "Text i want to use."; 

private static int MaxTextLength { get { return MaxText.Length; } } 
0

Liệu các giá trị cần phải là một const? Một công việc chỉ đọc tĩnh cho trường hợp của bạn?

private static readonly int MaxTextLength = "Text i want to use".Length; 

Điều này sẽ cho phép bạn viết mã theo cách tương tự như ví dụ đầu tiên của bạn.