C#面试题更新 2026-08-05

请解释 C# 中隐藏基类成员的概念,并说明 new 关键字在派生类中隐藏继承方法时的用法及其与重写的区别。

技术原理C#

考察说明

考察对 C# 中成员隐藏机制的理解,以及 new 关键字隐藏继承方法的具体用法和与重写的区别。

回答思路

  1. 【回答框架 1】隐藏是派生类重新定义基类中同名成员,而不使用 override 关键字,也不构成多态调用。当通过基类引用调用该成员时,调用的是基类版本;通过派生类引用调用时,调用的是派生类版本。
  2. 【回答框架 2】new 关键字在派生类中修饰同名成员,显式隐藏基类成员,编译器会给出警告(如果不加 new 可能提示隐藏),加上 new 则消除警告并明确意图。
  3. 【回答框架 3】隐藏与重写的区别:重写使用 override,基类方法需 virtual/abstract/override,形成多态,通过基类引用调用时执行派生类版本;隐藏不形成多态,通过基类引用调用基类版本。
  4. 【回答框架 4】使用场景:当基类方法在派生类中不适用或需要完全不同的实现,且不想破坏多态时,可使用 new 隐藏。
  5. 【关键点 1】new 隐藏是静态绑定,编译时决定调用哪个方法。
  6. 【关键点 2】隐藏不要求基类方法为 virtual,也不支持多态。
  7. 【关键点 3】通过基类引用调用时,隐藏方法不会被执行。
  8. 【易错点 1】误以为隐藏和重写效果相同,实际在多态调用时结果不同。
  9. 【易错点 2】不加 new 修饰符也能隐藏,但编译器会警告。