[英]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进行编译。]
事实并非如此。
枚举类型的默认可访问性与任何其他类型相同; 顶级类型的内部和嵌套类型的私有。
您链接的页面表明枚举成员 ( Red
, Blue
等)的默认(实际上是唯一)可访问性级别是公共的。
上面提到的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.