gpt4 book ai didi

c# - 多态性:被调用方法的真实类型是什么?

转载 作者:行者123 更新时间:2023-11-30 23:24:43 25 4
gpt4 key购买 nike

任何人都可以解释这段代码的行为吗,因为我正在玩多态性,我偶然想出了这段代码,我真的很困惑它的行为:

public class Book
{
public virtual void Method()
{
Console.WriteLine("Book/ I am here in "+ GetType().Name);
}
}
class Chapter : Book
{
public new void Method()
{
Console.WriteLine("Chapter/ I am here in "+ GetType().Name);
}

static void Main()
{
Book myBook = new Chapter() ;
myBook.Method();
}
}

这个程序的输出是

Book/ I am here in Chapter

这意味着实例调用了书类中的方法,但获得的类型是 chapterGetType() 方法是否取决于它调用的实例,而不是它所在的类?

最佳答案

是的,GetType() 在运行时从对象(实例)获取实际类型。

如果你改变了public new void Method()公共(public) override void Method() 它会打印出另一行。

参见 MSDN :

Return Value

Type: System.Type

The exact runtime type of the current instance.

关于c# - 多态性:被调用方法的真实类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37610747/

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