Trình biên dịch C# và IL chắc chắn hỗ trợ các loại dưới dạng biểu thức không đổi, ít nhất là trong các tình huống nhất định. Nhìn vào các thuộc tính, họ sử dụng này rất nhiều:
[DebuggerTypeProxy(typeof(Mscorlib_CollectionDebugView<>))]
Các loại được nhúng vào như là một chuỗi trong trình biên dịch tạo ra mã, trên đường biên dịch mã IL sau:
.custom instance void System.Diagnostics.DebuggerTypeProxyAttribute::.ctor(class System.Type) = (
01 00 39 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63
74 69 6f 6e 73 2e 47 65 6e 65 72 69 63 2e 4d 73
63 6f 72 6c 69 62 5f 43 6f 6c 6c 65 63 74 69 6f
6e 44 65 62 75 67 56 69 65 77 60 31 00 00
)
Nếu bạn kiểm tra việc dữ liệu nhị phân, bạn sẽ nhận thấy đây là tên lớp hoàn toàn đủ điều kiện mà không có bất kỳ nhận dạng lắp ráp nào (System.Collections.Generic.Mscorlib_CollectionDebugView`1).
Để trả lời câu hỏi của bạn: Tôi không thấy bất kỳ lý do kỹ thuật nào tại sao điều này không thể thực hiện được, cũng như tôi không thể tưởng tượng khả năng tương thích. mà không ảnh hưởng đến kiểu được biên dịch trước đó, tham chiếu đến nó.
Tôi tự hỏi điều gì làm cho bạn đặt câu hỏi này, chắc chắn bạn sẽ không sử dụng hằng số như vậy trong mã thực? – MarioDS
Thay vào đó, tôi sử dụng chỉ đọc tĩnh. –