0

我一直在更新公司的软件,偶然发现了这个问题。有一个受保护的枚举,我想从该枚举中传递一个值作为静态方法的参数,但我不能导致我无法访问它,即使方法和枚举都在同一个类中。

例子:

Class SomeClass
{    
    protected enum Car
    {
        Id
    };

    public static void AMethod(Car enumValue)
    {
        MessageBox.Show("This is an enum:" + enumValue.ToString());
    }  
}

我无法将其Car enumValue用作参数,AMethod因为我无法访问它。为什么我不能这样做?我的意思是他们在同一个班级。我错过了什么吗?

4

1 回答 1

5

问题不在于您SomeClass看不到枚举。问题是你的枚举有一个protected访问修饰符,并且你试图在一个public方法中使用它(即在你的类之外可以访问)。您不能通过成员公开protected类型,public因为其他类中的方法在尝试调用时看不到枚举AMMethod()

根据您打算如何使用此类,您需要更改其中一个或另一个,以便访问修饰符匹配:

public enum Car
{
    Id
};

public static void AMethod(Car enumValue)
{
    MessageBox.Show("This is an enum:" + enumValue.ToString());
}  

或者:

protected enum Car
{
    Id
};

protected static void AMethod(Car enumValue)
{
    MessageBox.Show("This is an enum:" + enumValue.ToString());
}  

后者只是防止编译错误,但可能是你 AMethod公开的情况,所以你应该选择前者。

于 2015-01-30T18:03:06.877 回答