Доступ к защищенным членам и приведение типов - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Проблема 1 :

"доступ к защищенному члену "OldRailwayCar.Next (/Prev)" через квалификатор типа "OldRailwayCar" невозможен. Квалификатор должен иметь тип NewRailwayCar или производный от него"

Ошибка понятна, но смысл такого правила непонятен. Как оно помогает предохранять инкапсуляцию? Что сделать, чтобы избежать такой ошибки? Проблема 2 :

"аргумент не удается преобразовать из OldRailwayCar в NewRailwayCar"

Хочется сделать как-то так "PaintNextCars(carToPaint.Next as NewRailwayCar , newColor)", но не уверен, что так принято делать.
// Рекурсивный класс вагончик
class OldRailwayCar
{
     protected string Color;
     protected OldRailwayCar Next;
     protected OldRailwayCar Prev;
}
 
// Вагончик с допытной функциональностью
class NewRailwayCar : OldRailwayCar
{
     public static void DetachCar(NewRailwayCar carToDetach)
     {
           carToDetach.Prev.Next = carToDetach.Next; // Проблема 1
           carToDetach.Next.Prev = carToDetach.Prev; // Проблема 1
     }
 
      public static void PaintNextCars(NewRailwayCar carToPaint, string newColor)
      {
           carToPaint.Color = newColor;
           PaintNextCars(carToPaint.Next, newColor); // Проблема 2
      }
}

Решение задачи: «Доступ к защищенным членам и приведение типов»

textual
Листинг программы
set
{
      if (value != "green")
      {
            color = value;
      }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5