不能完全限定enum,这是一个bug吗?

时间:2015-02-01 15:10:21

标签: c#

这让我难倒了几分钟。出于某种原因,我不能在“测试”中对常数进行限定。下面的课程。编译器认为' A'是A.A.A'的结束。命名空间,因此不会看到常量。任何人都可以告诉我为什么资格和A.B.Constants.Constants.A'在这里不起作用?

namespace A.B.Constants
{
    public class Constants
    {
        public enum A
        {
            A,
            B
        };
    }
}

namespace A.B.A
{
    public class Test
    {
        A.B.Constants.Constants.A enumA; // Error here on the 'B'
        Constants.Constants.A secondEnumA; // This works
    }
}

1 个答案:

答案 0 :(得分:5)

我无法告诉你为什么会这样(无聊的回答:因为C#规范是这么说的 - 但这并没有给出任何见解)。这是一个解决方法:

global::A.B.Constants.Constants.A enumA;

使用global::前缀或extern别名。