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

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

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

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

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

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

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

Хочется сделать как-то так "PaintNextCars(carToPaint.Next as NewRailwayCar , newColor)", но не уверен, что так принято делать.
Листинг программы
  1. // Рекурсивный класс вагончик
  2. class OldRailwayCar
  3. {
  4. protected string Color;
  5. protected OldRailwayCar Next;
  6. protected OldRailwayCar Prev;
  7. }
  8. // Вагончик с допытной функциональностью
  9. class NewRailwayCar : OldRailwayCar
  10. {
  11. public static void DetachCar(NewRailwayCar carToDetach)
  12. {
  13. carToDetach.Prev.Next = carToDetach.Next; // Проблема 1
  14. carToDetach.Next.Prev = carToDetach.Prev; // Проблема 1
  15. }
  16. public static void PaintNextCars(NewRailwayCar carToPaint, string newColor)
  17. {
  18. carToPaint.Color = newColor;
  19. PaintNextCars(carToPaint.Next, newColor); // Проблема 2
  20. }
  21. }

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

textual
Листинг программы
  1. set
  2. {
  3.       if (value != "green")
  4.       {
  5.             color = value;
  6.       }
  7. }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут