Может кто-нибудь объяснить мне полиморфизм времени выполнения и полиморфизм времени компиляции относительно C #?
Я нашел похожие вопросы по SO, но они касались C ++.
Вот сайт с хорошим объяснением:
http://www.dickbaldwin.com/csharp/Cs000120.htm
Цитировать статью:
Причина, по которой этот тип полиморфизма часто называют полиморфизмом во время выполнения, заключается в том, что решение о том, какую версию метода выполнять, не может быть принято до времени выполнения. Решение не может быть принято во время компиляции (как в случае с перегруженными методами). Решение не может быть принято во время компиляции, поскольку у компилятора нет возможности узнать (когда программа компилируется) фактический тип объекта, ссылка на который будет сохранена в ссылочной переменной. В крайнем случае, например, объект может быть получен во время выполнения из сетевого соединения, о котором компилятор не знает.
Причина, по которой этот тип полиморфизма часто называют полиморфизмом во время выполнения, заключается в том, что решение о том, какую версию метода выполнять, не может быть принято до времени выполнения. Решение не может быть принято во время компиляции (как в случае с перегруженными методами).
Решение не может быть принято во время компиляции, поскольку у компилятора нет возможности узнать (когда программа компилируется) фактический тип объекта, ссылка на который будет сохранена в ссылочной переменной.
В крайнем случае, например, объект может быть получен во время выполнения из сетевого соединения, о котором компилятор не знает.