Jos*_*mez 0 c# access-modifiers class-visibility
我一直在更新公司的软件,偶然发现了这个问题.这个枚举是受保护的,我想从枚举中传递一个值作为静态方法的参数,但我不能导致我无法访问它,即使方法和枚举都在同一个类中.
例:
Class SomeClass
{
protected enum Car
{
Id
};
public static void AMethod(Car enumValue)
{
MessageBox.Show("This is an enum:" + enumValue.ToString());
}
}
Run Code Online (Sandbox Code Playgroud)
我不能使用它Car enumValue作为参数AMethod因为我无法访问它.为什么我不能这样做?我的意思是他们在同一个班级.我错过了什么吗?
问题不在于你SomeClass看不到枚举.问题是你的枚举有一个protected访问修饰符,你试图在一个public方法中使用它(即在你的课外可访问).您不能通过成员公开protected类型,public因为其他类中的方法在尝试调用时无法看到枚举AMMethod().
根据您打算如何使用此类,您需要更改其中一个,以便访问修饰符匹配:
public enum Car
{
Id
};
public static void AMethod(Car enumValue)
{
MessageBox.Show("This is an enum:" + enumValue.ToString());
}
Run Code Online (Sandbox Code Playgroud)
要么:
protected enum Car
{
Id
};
protected static void AMethod(Car enumValue)
{
MessageBox.Show("This is an enum:" + enumValue.ToString());
}
Run Code Online (Sandbox Code Playgroud)
后者只会阻止编译器错误,但可能是你希望 AMethod公开的情况,所以你应该选择前者.