2015-02-16 14 views
10

Tại sao điều này hoạt động:Làm thế nào để GetType() biết loại của một lớp dẫn xuất?

Object o = "my string"; 
Console.WriteLine(o.GetType()); 

Output:

System.String 

này sẽ có ý nghĩa nếu cuộc gọi hàm được cử đến lớp String, nhưng nó đã không từ GetType() không phải là ảo.

+0

Siêu dữ liệu. Bạn không nhận được nó với C# Native. – Aron

+0

Hãy thử sử dụng 'ildasm.exe' –

+4

Bạn có thể thấy: [Điều gì thực sự xảy ra khi bạn làm GetType()?] (Http://stackoverflow.com/questions/3296526/what-does-really-happen-when- you-do-gettype) – Habib

Trả lời

3

Loại thời gian thực hiện là một phần của dữ liệu của chính đối tượng đó. Nó gần như là một trường chỉ đọc ẩn trong System.ObjectGetType() chỉ trả về giá trị của trường đó. Lưu ý rằng thông tin này là cần thiết để CLR tìm ra nơi để gửi các phương thức ảo - vì vậy nếu bạn nghĩ nó sẽ hoạt động nếu GetType là ảo, hãy hỏi chính bạn như thế nào CLR sẽ biết được thực hiện để gọi.

Các vấn đề liên quan