gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 09:14:13 25 4
gpt4 key购买 nike

为什么会这样:

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

输出:

System.String

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

最佳答案

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

请注意,此信息对于 CLR 确定在何处分派(dispatch)虚拟方法是必需的 - 因此,如果您认为如果 GetType 是虚拟的它会起作用,请问问自己 CLR 如何知道哪个实现打电话。

关于c# - GetType() 如何知道派生类的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28544319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com