以下の私のコードはコンパイルされません。私は何が間違っているのですか?私は基本的に、基本クラスでオーバーライドされるパブリック定数を作成しようとしています。
public abstract class MyBaseClass
{
public abstract const string bank = "???";
}
public class SomeBankClass : MyBaseClass
{
public override const string bank = "Some Bank";
}
いつもお世話になってくれてありがとう!
定数がオブジェクトを記述している場合、それはプロパティである必要があります。定数は、その名前で変更されるべきではなく、ポリモーフィズムの影響を受けないように設計されています。同じことが静的変数にも当てはまります。
基本クラスに抽象プロパティ(またはデフォルト値が必要な場合は仮想)を作成できます。
public abstract string Bank { get; }
次に、次のようにオーバーライドします。
public override string Bank { get { return "Some bank"; } }
あなたがやろうとしていることはできません。 static
とconst
は上書きできません。オーバーライドできるのは、インスタンスのプロパティとメソッドのみです。
そのbank
フィールドをプロパティに変換し、次のように抽象として販売できます。
public abstract string Bank { get; }
次に、これまでと同じように、継承されたクラスでオーバーライドします。
public override string Bank { get { return "Charter One"; } }
これがお役に立てば幸いです。裏側では、あなたもすることができます
public const string Bank = "???";
次に、継承されたクラスで
public const string Bank = "Charter One";
static
とconst
はポリモーフィズムの外部で動作するため、オーバーライドする必要はありません。
「const」を使い続けたい場合は、上記を少し変更してください。
public abstract string Bank { get; }
次に、次のようにオーバーライドします。
private const string bank = "Some Bank";
public override string Bank { get { return bank;} }
そして、プロパティは派生型から「const」を返します。