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 中从后代看到受保护的 const,它按预期编译。

于 2009-06-25T02:01:32.580 回答
1

你有没有让你的常数至少受到保护?如果它是私有的,则子类将无法访问它,就像它不是抽象类一样。

编辑:我看到您发布了一个示例 - 并确实将其指定为受保护的,这对我有用。有描述会发生什么吗?不编译?运行时错误?

于 2009-06-25T02:06:34.677 回答
0

只要您在声明中对其进行初始化,就应该没有问题。您收到的错误信息是什么?

于 2009-06-25T02:05:18.610 回答