Bạn sẽ luôn nhận được "SomethingElse". Điều này là do ConstantB phụ thuộc vào ConstantA.
Bạn thậm chí có thể chuyển đổi các đường và bạn sẽ nhận được kết quả tương tự. Trình biên dịch biết rằng ConstantB phụ thuộc vào ConstantA và sẽ xử lý nó cho phù hợp, ngay cả khi bạn viết nó trong các lớp một phần.
Để hoàn toàn chắc chắn bạn có thể chạy Dấu nhắc lệnh và gọi ILDASM. Ở đó bạn có thể thấy mã được biên dịch thực tế.
Ngoài ra, nếu bạn cố gắng làm những điều sau đây bạn sẽ nhận được một lỗi biên dịch:
private const string ConstantB = ConstantA + "Else";
private const string ConstantA = "Something" + ConstantB;
Lỗi: Việc đánh giá các giá trị không đổi cho 'ConsoleApplication2.Program.ConstantB' liên quan đến một định nghĩa tròn Loại chứng minh trình biên dịch này biết các phụ thuộc của nó.
Added: Spec tài liệu tham khảo đã chỉ ra bởi Jon Skeet:
This is explicitly mentioned in section 10.4 of the C# 3 spec: Constants are permitted to depend on other constants within the same program as long as the dependencies are not of a circular nature. The compiler automatically arranges to evaluate the constant declarations in the appropriate order.
Nguồn
2009-08-17 13:20:58
@Svish, vui lòng xem bình luận của Jon Skeet về câu trả lời của ông –
@ Nathan, cảm ơn, đã không nhận ra điều này: p – Svish