title: Early and late binding
body: <p>I'm trying to get my head around when early/late binding occurs in C#.</p>
  
  <p>Non-virtual methods are always early bound.  Virtual methods are always late bound: the compiler inserts extra code to resolve the actual method to bind to at execution time and checks for type safety. So subtype polymorphism uses late binding.</p>
  
  <p>Calling methods using reflection is an example of late binding. We write the code to achieve this as opposed to the compiler. (E.g. calling COM components.)</p>
  
  <p>VB.NET supports implicit late binding when Option Strict is off. An object is late bound when it is assigned to a variable declared to be of type Object. The VB compiler inserts code to bind to the right method at execution time and to catch invalid calls.  C# does not support this feature.</p>
  
  <p>Am I heading in the right direction?</p>
  
  <p>What about calling delegates and calling a method through an interface reference? Is that early or late binding?</p>