繁体   English   中英

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

[英]default access modifier for enum in C#

根据MSDN 此处此处 (以及此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进行编译。]

事实并非如此。

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

您链接的页面表明枚举成员RedBlue等)的默认(实际上是唯一)可访问性级别是公共的。

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

Test.Color是类的成员 - 因此是私有的。

该表是指成员 ; 成员是“RED”,“BLUE”和“GREEEN”,并且确实是公共文字常量,并且不允许使用可访问性。

比如说,对比一个类的成员 (字段,方法,常量等); 这里,根据表格,默认为“私有”,但您可以指定更高的可访问性。

我相信,因为你在没有修饰符的情况下在类中声明,它假定是私有的,因为它是类中的标准行为。 指定应该解决问题的公共。 但请注意,Code Analysis会建议将此枚举放在课堂外。

这是因为你的枚举上没有public,protected,internal,它取默认值(这是类和枚举的内部)

对不起,您不能公开财产,因为枚举是私人的

如果有人使用您的程序并且编译器告诉您有关它,公共财产将在外部公开

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM