Virtual Versus Dynamic Virtual and dynamic methods are semantically equivalent. They differ only in the implementation of method-call
dispatching at runtime. Virtual methods optimize for speed, while dynamic methods optimize for code size.
In general, virtual methods are the most efficient way to implement polymorphic behavior. Dynamic methods are
useful when a base class declares many overridable methods which are inherited by many descendant classes in
an application, but only occasionally overridden.
Note: Only use dynamic methods if there is a clear, observable benefit. Generally, use virtual methods.