抽象クラスでconstフィールドを宣言するのに問題があります。どうしてこれなの?
編集
明確にすべきだった。私の問題は、私の子クラスがconstフィールドを認識できないことです。
protected const string Prefix = "dynfrm_";
constキーワードを削除すると、孫クラスから取得できます。
public abstract class Class1
{
protected const string Prefix = "dynfrm_";
}
public class Class2 : Class1
{
public void GetConst()
{
Console.WriteLine(Prefix);
}
}
どうぞ...
abstract class MyBase
{
protected const int X = 10;
}
class Derived : MyBase
{
Derived()
{
Console.WriteLine(MyBase.X);
}
}
正常に動作しているようです:
public abstract class Class1
{
protected const int Field1 = 1;
}
public class Class2 : Class1
{
public int M1()
{
return Field1;
}
}
Visual Studio 2008 SP1を使用していますが、IntelliSenseの保護された定数が子孫から表示され、期待どおりにコンパイルされます。
あなたはあなたの定数を少なくとも保護しましたか?プライベートの場合、抽象クラスでない場合と同じように、子クラスからアクセスできません。
編集:あなたが例を投稿したのを見ます-そしてそれを保護されたものとして指定しました、それは私のために働きます。何が起こるかについての説明がありますか?コンパイルしませんか?ランタイムエラー?
宣言で初期化する限り、問題は発生しないはずです。表示されているエラーメッセージは何ですか?