Ваш вопрос, кажется, отражает этот пример в документах.
Защищенный член базового класса доступен в производном классе, только если доступ происходит через производный Тип класса.
public class DerivedClass : BaseClass
{
public void Print()
{
BaseClass baseClass = new BaseClass();
DerivedClass derived = new DerivedClass();
// This is ok
Console.WriteLine(number);
// So is this
Console.WriteLine(derived.number);
// But you can't do this
Console.WriteLine(baseClass.number);
}
}
Без этого ограничения было бы возможно следующее, что явно является недостатком безопасности:
public class AnotherDerivedClass : BaseClass
{
public bool IsValid => number == 10;
}
public class DerivedClass : BaseClass
{
public void Print()
{
BaseClass anotherAsBase = new AnotherDerivedClass();
anotherAsBase.number = 0;
}
}
В приведенном выше примере экземпляр DerivedClass
вмешался в детали реализации AnotherDerivedClass
. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *. * * * * * * * Это не может быть AnotherDerivedClass
.