我一直在更新公司的软件,偶然发现了这个问题。这个枚举是受保护的,我想从枚举中传递一个值作为静态方法的参数,但我不能导致我无法访问它,即使方法和枚举都在同一个类中。 / p>
示例:
Class SomeClass
{
protected enum Car
{
Id
};
public static void AMethod(Car enumValue)
{
MessageBox.Show("This is an enum:" + enumValue.ToString());
}
}
我无法将此Car enumValue
用作AMethod
的参数,因为我无法访问它。
为什么我不能这样做?我的意思是他们在同一个班级。我错过了什么吗?
答案 0 :(得分: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
公开,所以你应该选择前者。