看了对Anders Hejlsberg的采访, 1)C#中函数默认是非virtual的设计因为:在java中,一个方法默认是虚拟化的,只有对一个方法必须声明final关键字,这样这个方法才是非虚的,无法被子类重写.而C#中,方法默认是非虚的,只有加上virtual关键字,子类才能被重写. 据Hejlsberg说,这样设计的好处是,第一,他观察到很多java程序员都忘写final:第二,虚化性能相对于非虚化要差一点. 2)virtual这个关键字其实含义是为了版本控制.用他自己的话说, "版本控制…