抽象类中的C#Const字段

时间:2009-06-25 01:58:06

标签: c# const abstract

我在抽象类中声明一个const字段时遇到了麻烦。这是为什么?

修改

我应该澄清一下。我的问题是我的子类无法看到const字段:

protected const string Prefix = "dynfrm_";

如果我删除了const关键字,我可以从孙子类中找到它。

5 个答案:

答案 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)

只要您在声明中初始化它,就不会有问题。您收到的错误消息是什么?