C# new override

A -> virtual Fun

B : A -> override Fun

C : B -> override Fun

D : C -> new virtual Fun

E : D -> override Fun

E e;

A = e -> C.Fun

B = e -> C.Fun

C = e -> C.Fun

D = e -> E.Fun         

Rule: 如A=e,则假设调用A.Fun,发现被B override, 再到B, 发现被C override, 继续到D,发现被NEW隐藏,故此用C

PS -> 对于E构造,顺序为 A->B>C>D>E..如果没有显示的指定调用哪个构造函数(:base(...)), 则每个基类至少有一个子类能访问的无参构造函数,如果一个构造函数都没有,则系统会自动创建一个。

原文地址:https://www.cnblogs.com/bdbw2012/p/3810439.html