Here Be Spoilers...
I'm looking at the answer to #1, and I must admit I never knew this was the case in overload resolution. But why is this the case. In my tiny mind Derived.Foo(int)
seems like the logical route to go down.
What is the logic behind this design decision?
BONUS TIME!
Is this behaviour a result of the C# specification, the CLR implementation, or the Compiler?