Страницы

Поиск по вопросам

воскресенье, 2 февраля 2020 г.

Константное поле для родительского класса

#c_sharp #наследование


я хочу что бы в абстрактном базовом классе Base было константное поле которое должно
задаваться у каждого потомка Derived1, Derived2 своим значением.



UPD: Забыл спросить: поле должно быть статическим?



UPD: Переформулирую вопрос.
Есть базовый класс В в котором хочу обязать всех потомков реализовывать статическое
поле size, которое будет защищено от изменения даже внутри класса. Есть 2 потомка:
класс Х и Y. В классе X поле size должно равняться 6. В классе Y поле должно равняться 10.
    


Ответы

Ответ 1



public class Base { public int ConstValue { get; private set; } public Base(int aConstValue) { ConstValue = aConstValue; } } public class Child1 : Base { public Child1() : base(1) { } } public class Child2 : Base { public Child2() : base(2) { } } @andreycha - А лучше сделать свойство абстрактным. public abstract class Base { public abstract int ConstValue { get; } } public class Child1 : Base { public override int ConstValue { get { return 1; } } } public class Child2 : Base { public override int ConstValue { get { return 2; } } }

Ответ 2



Используйте свойство только для чтения: abstract class Player { public abstract string Name { get; } } class Bot : Player { public override string Name => "Robot"; }

Комментариев нет:

Отправить комментарий