0

クラスの型を知らなくても、そのクラスのインスタンスで const クラス値にアクセスする必要があり、クラス自体でもアクセスできる必要があります。これどうやってするの?

私が達成したいことの例:

public abstract class A { }

public class B : A
{
    public const int X = 50;
}
...
A b = new B();
b.X ???

これは非常に不完全ですが、達成したいのは、型 A の変数から B の X 定数にアクセスすることです (それが理にかなっている場合)。

これは私がこれを達成しようとした1つの方法です:

public abstract class A
{
    public abstract int X { get; }
}

public class B : A
{
    public const int X = 50;
    public override int X { get { return B.X; } } // or return 50;
}

ただし、これの問題は、B で X の定義が重複しているため、C# ではこれをコンパイルできないことです。より良い方法はありますか?または、私の唯一のオプションは、それらに別の名前を付けることですか?

4

2 に答える 2

0

あなたが望むのは静的な読み取り専用メンバーかもしれません:

public abstract class A {
    public static readonly int X=100;
}

public class B: A {
    public static readonly int X=50;
}

readonlyを見てください。静的な読み取り専用メンバーはランタイム定数と考えることができます。

オーバーライド可能な定数/静的メンバーを探している場合は、仮想静的プロパティを実装する方法をご覧になることをお勧めします。; これはC# でも不可能です

于 2013-05-16T00:18:35.023 に答える