Переопределение констант в производных классах в C #

Отношение повторения временной сложности равно

T (a, b) = 2T (a / 2, b) + O (b ^ 2)

Так ясно, что высота дерева будет logn. Таким образом, сложность времени равна O (n ^ 2 * logn).

34
задан 20 April 2009 в 23:07
поделиться

2 ответа

это не константа, если вы хотите переопределить ее;) попробуйте виртуальное свойство только для чтения (или защищенный установщик) ...

Свойство только для чтения

public class MyClass {
    public virtual string MyConst { get {return "SOMETHING"; }}
}
...
public class MyDerived : MyClass {
    public override string MyConst { get { return "SOMETHINGELSE"; }}
}

Защищенный сеттер

public class MyClass {
    public string MyConst { get; protected set; }

    public MyClass() {
        MyConst = "SOMETHING";
    }
}

public class MyDerived : MyClass {
    public MyDerived() {
        MyConst = "SOMETHING ELSE";
    }
}
54
ответ дан 27 November 2019 в 05:27
поделиться

К сожалению, константы не могут быть переопределены, поскольку они не являются виртуальными членами. Идентификаторы констант в вашем коде заменяются их литеральными значениями компилятором во время компиляции.

Я хотел бы предложить вам использовать абстрактное или виртуальное свойство для того, что вы хотели бы сделать. Они являются виртуальными и как таковые могут (должны быть, в случае абстрактного свойства) переопределяться в производном типе.

31
ответ дан 27 November 2019 в 05:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: