C#中枚举的默认访问修饰符

kmo*_*ote 7 c# oop enums

根据MSDN 此处此处(以及此qstn接受答案),枚举的默认可访问性是public.但是,这段代码:

public class Test
{
    enum Color { RED, BLUE, GREEN };
    public void SetColor(Color c) { }
}
Run Code Online (Sandbox Code Playgroud)

会引发这个编译错误:

Error 1 Inconsistent accessibility: parameter type 'Test.Color' is less accessible than method 'Test.SetColor(Test.Color)'

(这与将枚举设置为时出现的错误相同private.)此错误只能通过显式修改枚举来解决public.文档不正确吗?

[我正在使用C#2010和.NET 4.0进行编译.]

SLa*_*aks 11

事实并非如此.

枚举类型的默认可访问性与任何其他类型相同; 顶级类型的内部和嵌套类型的私有.

您链接到的网页声明,默认值(和,其实只),枚举访问级别会员(Red,Blue,等)是公开的.


Kri*_*izz 5

上面提到的MSDN文章和SO答案都是指"枚举成员" - ieeg Test.Color.RED,而不是Test.Color枚举本身.

Test.Color 是一个阶级的成员 - 因此是私人的.