根据MSDN here和here(以及accepted answer to this qstn),枚举的默认辅助功能为public
。
但是,这段代码:
public class Test
{
enum Color { RED, BLUE, GREEN };
public void SetColor(Color c) { }
}
将引发此编译错误:
Error 1 Inconsistent accessibility: parameter type 'Test.Color' is less accessible than method 'Test.SetColor(Test.Color)'
(将枚举设置为private
时出现的错误与此相同。)此错误只能通过将枚举显式修改为public
来解决。文档是否不正确?
[我正在使用C#2010和.NET 4.0进行编译。]
答案 0 :(得分:11)
事实并非如此。
枚举类型的默认辅助功能与任何其他类型相同; top级别的内部类型和嵌套类型的private。
您链接的页面表明枚举成员(Red
,Blue
等)的默认(实际上是唯一)辅助功能级别是公开的。
答案 1 :(得分:5)
上述MSDN文章和SO答案指的是“枚举成员” - 即例如Test.Color.RED
,而不是Test.Color
作为枚举本身。
Test.Color
是班级成员 - 因此是私人的。
答案 2 :(得分:2)
该表是指成员;成员是“RED”,“BLUE”和“GREEEN”,并且确实是公共文字常量,并且不允许使用可访问性。
比较一个类的成员(字段,方法,常量等);这里,根据表格,默认为“私有”,但您可以指定更高的可访问性。
答案 3 :(得分:1)
我相信因为你在没有修饰符的情况下在类中声明,所以它假设是私有的,因为它是类中的标准行为。指定应该解决问题的公共。但请注意,Code Analysis会建议将此枚举放在课堂外。
答案 4 :(得分:-1)
这是因为你的枚举上没有public,protected,internal,它需要默认值(这是类和枚举的内部)
抱歉这令人困惑,你不能把这个属性公开,因为枚举是私有的 如果某人使用您的程序并且编译器告诉您有关它的话,公共财产将在外部公开