Polymorphism may be implemented both at runtime and compile time.
A function having 2 definitions (with different types of signatures) is truely a polymorphic function, and when we build the source, we easily see that this is digested by the .NET compiler during compile time. So we say its polymorphic at compile time.
Now when a function is used depending on user's input (when the application is running), then any of these 2 functions may be called depending on the activities happening inside the application, this scenario is said to be a runtime polymorphic behavior.
For more information, read this...
http://www.dotnetuncle.com/OOPS/17_overloading.aspx
http://www.dotnetuncle.com/OOPS/13_polymorphism.aspx
HTH
Cheers
VK
http://www.dotnetuncle.com