[英]How to get the 'type name' of an derived entity within LINQ statement : “does not recognize the method 'System.Type 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.