的C#4.0規格如下:運行時類型VS編譯時類型的方法調用
當調用虛擬方法,該實例的用於 運行時類型其中該調用發生確定實際方法 實施調用。在非虛擬方法調用中,實例的編譯時類型是決定性因素。
起初,我認爲這與初始化有關。例如,給定兩個初始化:
BaseClass bcDerived = new Derived();
VS BaseClass bcBase = new BaseClass();
並在一個輔助類的過載:
public virtual void Method(Derived d)
{
Console.WriteLine("Result = derived called");
}
public virtual void Method(BaseClass d)
{
Console.WriteLine("Result = base called");
}
Method
invokation不是由在此情況下,virtual
關鍵字影響。無論標記爲virtual
,調用的是派生最少的超載。只有在Derived類中的override
期間,方法調用纔會更改。
那麼,「運行時類型」和「編譯時類型」是什麼意思?它們如何影響方法調用?
請說明'Method'的聲明以及使用方法。 –
@BrianRasmussen - 在OP中,這些方法是輔助類的成員。 –
謝謝。在這種情況下,我不確定接受的答案如何與您的問題相匹配,因爲它不包含輔助類。但是,只要你對答案滿意,我就很好。 –