Late binding
With late binding, all you have is the name of the method. At compile time, you do not know if the method exists. This is called duck printing in languages โโsuch as Ruby or Python.
Late binding is slow because you need to search for a function by name. This is also dangerous because you are not protected from minor spelling errors.
Prior to version 4, C # does not support late binding, except to explicitly call the reflection API.
Early binding
When using early binding, you are compiling the actual method. This method can be assigned directly or it can be a slot in the V-table. In any case, you are not required to refuse the MissingMethod exception.
History
Visual Basic was well known for both early and late binding, but due to its other limitations, it was never considered a true dynamic language. At the same time, versions prior to 7 (aka VB.NET) had very poor support for forced early binding, which made it difficult to call it a static language.
With .NET 4, we can say that both C # and VB offer most of the functions expected from both static and dynamically typed languages.
At some point, Java mistakenly stated that it had later binding support, when it had only early restrictions, OOP style V-tables. Over the years, this has led to confusion.
source share