无法将受保护的枚举作为静态方法的参数传递
Can't pass protected enum as parameter for static method
我一直在更新公司的软件,偶然发现了这个问题。有一个受保护的枚举,我想从该枚举中传递一个值作为静态方法的参数,但我不能因为我无法访问它,即使方法和枚举都在同一个 class.
示例:
Class SomeClass
{
protected enum Car
{
Id
};
public static void AMethod(Car enumValue)
{
MessageBox.Show("This is an enum:" + enumValue.ToString());
}
}
我无法将此 Car enumValue
用作 AMethod
的参数,因为我无权访问它。
为什么我不能这样做?我的意思是他们在同一个class。我错过了什么吗?
问题不在于您的 SomeClass
看不到枚举。问题是你的枚举有一个 protected
访问修饰符,你试图在 public
方法中使用它(即可访问 outside 你的 class).您不能通过 public
成员公开 protected
类型,因为其他 classes 中的方法在尝试调用 AMMethod()
时看不到枚举。
根据您打算如何使用它 class,您需要更改其中一个以使访问修饰符匹配:
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
public的情况,所以您应该选择前者。
我一直在更新公司的软件,偶然发现了这个问题。有一个受保护的枚举,我想从该枚举中传递一个值作为静态方法的参数,但我不能因为我无法访问它,即使方法和枚举都在同一个 class.
示例:
Class SomeClass
{
protected enum Car
{
Id
};
public static void AMethod(Car enumValue)
{
MessageBox.Show("This is an enum:" + enumValue.ToString());
}
}
我无法将此 Car enumValue
用作 AMethod
的参数,因为我无权访问它。
为什么我不能这样做?我的意思是他们在同一个class。我错过了什么吗?
问题不在于您的 SomeClass
看不到枚举。问题是你的枚举有一个 protected
访问修饰符,你试图在 public
方法中使用它(即可访问 outside 你的 class).您不能通过 public
成员公开 protected
类型,因为其他 classes 中的方法在尝试调用 AMMethod()
时看不到枚举。
根据您打算如何使用它 class,您需要更改其中一个以使访问修饰符匹配:
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
public的情况,所以您应该选择前者。