So what would actually be the proper procedure when calling a method and passing a function pointer to it. like the DoSort(myPeople, AddressOf Person.CompareName) method we have.

Would we pass the address of the function or the address of the delegate? And if we do pass the address of the function what happens if the parameters don't match? Is the delegate then clalled instead? It seems like there is some dynamic binding going on under the scenes also.