Possible Duplicate:
Why C# implements methods as non-virtual by default?
It would be much more less work to define which methods are NOT overideable instead of which are overideable because (at least for me), when you’re designing a class, you don’t care if its heirs will override your methods or not…
So, why methods in C# are not automatically virtual? What is the common sense in this?
You should care which members can be overridden in derived classes.
Deciding which methods to make virtual should be a deliberate, well-thought-out decision – not something that happens automatically – the same as any other decisions regarding the public surface of your API.