Về cơ bản, bạn đã trả lời câu hỏi của riêng mình. Khi mã của bạn được biên dịch, nó được chuyển đổi thành ngôn ngữ trung gian (IL). IL không có tên biến theo cách mã của bạn làm, các đối số cho một phương thức được gọi là được đẩy vào ngăn xếp trước khi phương thức được gọi và các đối số phương thức dòng và biến cục bộ được tham chiếu bởi vị trí đó. Tôi tin rằng điều này là bởi vì cấu trúc này hỗ trợ trình biên dịch JIT tạo mã.
Tệp ký hiệu pdb lưu trữ ánh xạ giữa IL được tạo và mã của bạn. Nó được sử dụng để cho bạn biết dòng nào trong mã của bạn mà mỗi phương thức gọi trong ngăn xếp cuộc gọi đề cập đến. Có thể thông tin được lưu trữ ở đây không đủ chi tiết để nói biến nào là null, hoặc có thể nó chỉ được coi là quá đắt về mặt perf khi có thể làm được điều này. Trong mọi trường hợp, nếu bạn đã cho phép trình biên dịch tối ưu hóa IL được tạo ra thì có thể không còn là một ánh xạ một giữa các biến trong IL và các biến trong mã của bạn nữa.
Hy vọng rằng sẽ giúp, Rob
Vâng, nó thực sự khó chịu. Tôi cũng muốn biết. –
Bạn biết đấy, tôi chưa bao giờ nghĩ về điều đó - câu hỏi hay! –