繁体   English   中英

GetType()如何知道派生类的类型?

[英]How does GetType() knows the type of a derived class?

为什么这样有效:

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

输出:

System.String

如果函数调用被调度到String类,这是有意义的,但它没有,因为GetType()不是虚拟的。

执行时类型是对象本身数据的一部分。 它几乎就像是System.Object隐藏的只读字段,而GetType()只返回该字段的值。 (这不是那么简单,但这是一个合理的近似值。)

请注意,此信息对于CLR确定调度虚拟方法的位置是必要的 - 因此,如果您认为如果GetType是虚拟的,它将起作用,请问自己CLR将如何知道要调用的实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM