我在抽象类中声明一个const字段时遇到了麻烦。这是为什么?
我应该澄清一下。我的问题是我的子类无法看到const字段:
protected const string Prefix = "dynfrm_";
如果我删除了const关键字,我可以从孙子类中找到它。
答案 0 :(得分:4)
public abstract class Class1
{
protected const string Prefix = "dynfrm_";
}
public class Class2 : Class1
{
public void GetConst()
{
Console.WriteLine(Prefix);
}
}
答案 1 :(得分:3)
你去......
abstract class MyBase
{
protected const int X = 10;
}
class Derived : MyBase
{
Derived()
{
Console.WriteLine(MyBase.X);
}
}
答案 2 :(得分:2)
似乎工作正常:
public abstract class Class1
{
protected const int Field1 = 1;
}
public class Class2 : Class1
{
public int M1()
{
return Field1;
}
}
我正在使用Visual Studio 2008 SP1,我从后代看到IntelliSense中受保护的const,并按预期编译。
答案 3 :(得分:1)
你是否让你的常数至少受到保护?如果它是私有的,那么子类将无法访问它,就像它不是一个抽象类一样。
编辑:我看到你发布了一个例子 - 并确实将其指定为受保护,这对我有用。有一个描述发生了什么?不编译?运行时错误?
答案 4 :(得分:0)
只要您在声明中初始化它,就不会有问题。您收到的错误消息是什么?