new

Модификатор new явно скрывает члены базового класса, которые имею такое же имя, как у члена производного класса.
Не желательно создавать имена членов в производном классе, которые соответствуют именам в базовом классе.
Скрыть

Показать

Копировать
  Main.cs  
  • using System;
  •  
  • //базовый класс
  • class Base {
  •  //вложенный класс
  •   public class One {
  •   int val;
  •   public One(int arg) {
  •    val = arg;
  •   }
  •   public int getVal() {
  •    return val;
  •   }
  •  }
  • }
  •  
  • //производный класс
  • class  Car : Base {
  •  //вложенный класс
  •  //модификатор new явно скрывает класс с таким же именем в базовом классе
  •  new public class One {
  •   int val;
  •   public One(int arg) {
  •    val = arg;
  •   }
  •   public int getVal() {
  •    return val;
  •   }
  •  }
  • }
  •  
  • class Program {
  •  public static int Main() {
  •   Base.One BO = new Base.One(10);
  •   Console.WriteLine(BO.getVal());
  •   Car.One CO = new Car.One(20);
  •   Console.WriteLine(CO.getVal());
  •   Console.ReadKey();
  •   return 0;
  •  }
  • }
10
20