実際、あなたはオブジェクト指向プログラミングにおけるポリモーフィズムのポイントを誤解していると思います。
定数、フィールド、および変数は単なるストレージです (まあ、参照ですが、私は概念的な観点から話しています)。
ポリモーフィズムとは、何かの動作を変更することです。定数をオーバーライドすることは、動作を変更することではなく、その値を変更することです。
別のポイントは、定数はstaticであるため、インスタンスに属していませんが、不変の単一の値がありAppDomain
、アプリケーションのライフサイクルの間存続します。
上記のステートメントで、なぜインスタンス メンバーのような定数をオーバーライドしたいのでしょうか? 次の状況を想像できますか?
public class A
{
public virtual const int Some = 1;
}
public class B : A
{
public override const int Some = 2;
}
public class C : A
{
// No override here!
}
int valueOfSomeConstant = C.Some;
所有!定数が静的である場合、定数をオーバーライドしないC.Some
場合2
でも同じです!C
あなたの質問からの引用:
パフォーマンスのために const int と同じくらい明示的にしたい。[...]
これには答えしかありません。時期尚早の最適化は、ソフトウェア開発の悪魔です。
Jon Skeetが言ったように、これはあなたの問題の中で最も少ないものになるでしょう.