Здесь оператор new работает предсказуемым образом (NullReferenceException не возникает):
internal class Program
{
internal static void Main()
{
var child = new Child();
var param = (int)child.Param;
}
}
internal class Parent {
internal object Param => null;
}
internal class Child : Parent {
new internal int Param => 10;
}
Однако если попробовать переопределить в компоненте свойство Control.Command:
new IRaisableAsyncGuiCommand Command { get; init; }
При проверке типа все равно выполнится обращение к предыдущему свойству:
Это особенность винформ или я не до конца понимаю, как работает new, который вроде бы должен скрыть родительское свойство от всех вызовов?