C# 4.0 specyfikacje przeczytać:typu Runtime vs kompilacji metody typ inwokacją
Gdy wirtualna metoda jest wywoływana, rodzaj runtime przykład dla którym wywołanie odbywa określa rzeczywistą realizację metoda przywoływać. W przypadku wywoływania metody nie-wirtualnej czynnikiem decydującym jest typ kompilacji instancji typu .
Początkowo myślałem, że to ma coś wspólnego z inicjalizacją. Na przykład, biorąc pod uwagę dwa pliki uruchamiania:
BaseClass bcDerived = new Derived();
vs BaseClass bcBase = new BaseClass();
i przeciążenie w klasie pomocnika:
public virtual void Method(Derived d)
{
Console.WriteLine("Result = derived called");
}
public virtual void Method(BaseClass d)
{
Console.WriteLine("Result = base called");
}
Method
invokation nie jest dotknięte przez virtual
słowo kluczowe w tej sprawie. Bez względu na to, czy oznaczone jest virtual
, wywoływane jest najmniej pochodne przeciążenie. Tylko podczas override
w klasie pochodnej zmienia się wywołanie metody.
Co zatem oznacza "typ uruchomień" i "typ kompilacji"? Jak wpływają na wywołanie metody?
Proszę wyjaśnić, gdzie "Metoda" jest zadeklarowana i jak jest używana. –
@BrianRasmussen - W OP te metody są członkami klasy pomocniczej. –
Dzięki. W takim przypadku nie jestem pewien, w jaki sposób zaakceptowana odpowiedź pasuje do Twojego pytania, ponieważ nie zawiera klasy pomocnika. Jednak dopóki jesteś zadowolony z odpowiedzi, jestem dobry. –