[英]effect of instance type on Method invocation from derived class
假設我有以下內容:
static void Main(string[] args)
{
DerivedClass input = new DerivedClass();
input.WriteName(); // Outputs BaseClass
}
class BaseClass
{
public void WriteName()
{
Console.WriteLine(GetName());//this.GetType()
}
protected string GetName()
{
return "BaseClass";
}
}
class DerivedClass : BaseClass
{
protected new string GetName()
{
return "DerivedClass";
}
}
我對調用GetName()
方法的對象類型進行了一些測試(使用GetType())(我的意思是DerivedClass.GetName
的WriteName
)。 我知道WriteName
在DerivedClass
類DerivedClass
不到新方法,而GetName
方法被new
關鍵字隱藏,但是實例類型( DerivedClass
)對此沒有任何影響嗎? 調用GetName
方法時,類型是否轉換為基類? 從主方法DerivedClass.GetName
調用時,似乎提供了預期的結果。
該方法被派生類中的new關鍵字隱藏。 但這是從基類調用的,它將始終從基類調用實現。 甚至以下代碼也將打印“ BaseClass”:
public void WriteName()
{
string className = "";
if (this is DerivedClass)
{
className = ((DerivedClass)this).GetName();
}
else
{
className = this.GetName();
}
Console.WriteLine(className);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.