3

抽象クラスでconstフィールドを宣言するのに問題があります。どうしてこれなの?

編集

明確にすべきだった。私の問題は、私の子クラスがconstフィールドを認識できないことです。

protected const string Prefix = "dynfrm_";

constキーワードを削除すると、孫クラスから取得できます。

4

5 に答える 5

4
public abstract class Class1
{
    protected const string Prefix = "dynfrm_";
}

public class Class2 : Class1
{
    public void GetConst()
    {
        Console.WriteLine(Prefix);
    }
}
于 2009-06-25T02:09:24.623 に答える
3

どうぞ...

abstract class MyBase
{
    protected const int X = 10;
}
class Derived : MyBase
{
    Derived()
    {
        Console.WriteLine(MyBase.X);
    }
}
于 2009-06-25T02:03:14.527 に答える
2

正常に動作しているようです:

public abstract class Class1
{
    protected const int Field1 = 1;
}

public class Class2 : Class1
{
    public int M1()
    {
        return Field1;
    }
}

Visual Studio 2008 SP1を使用していますが、IntelliSenseの保護された定数が子孫から表示され、期待どおりにコンパイルされます。

于 2009-06-25T02:01:32.580 に答える
1

あなたはあなたの定数を少なくとも保護しましたか?プライベートの場合、抽象クラスでない場合と同じように、子クラスからアクセスできません。

編集:あなたが例を投稿したのを見ます-そしてそれを保護されたものとして指定しました、それは私のために働きます。何が起こるかについての説明がありますか?コンパイルしませんか?ランタイムエラー?

于 2009-06-25T02:06:34.677 に答える
0

宣言で初期化する限り、問題は発生しないはずです。表示されているエラーメッセージは何ですか?

于 2009-06-25T02:05:18.610 に答える