我在抽象类中声明 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 中从后代看到受保护的 const,它按预期编译。
你有没有让你的常数至少受到保护?如果它是私有的,则子类将无法访问它,就像它不是抽象类一样。
编辑:我看到您发布了一个示例 - 并确实将其指定为受保护的,这对我有用。有描述会发生什么吗?不编译?运行时错误?
只要您在声明中对其进行初始化,就应该没有问题。您收到的错误信息是什么?