title: Why C# implements methods as non-virtual by default?
body: <p>Unlike Java, why does C# treat methods as non-virtual functions by default?  Is it more likely to be a performance issue rather than other possible outcomes?</p>
  
  <p>I am reminded of reading a paragraph from Anders Hejlsberg about several advantages the existing architecture is bringing out. But, what about side effects? Is it really a good trade-off to have non-virtual methods by default?</p>