According to MSDN here and here (as well as the accepted answer to this qstn), the default accessibility for enums is public
.
However, this code:
public class Test
{
enum Color { RED, BLUE, GREEN };
public void SetColor(Color c) { }
}
will raise this compile error:
Error 1 Inconsistent accessibility: parameter type 'Test.Color' is less accessible than method 'Test.SetColor(Test.Color)'
(which is the same error you get when you set the enum as private
.) This error can only be resolved by explicitly modifying enum as public
. Is the documentation incorrect?
[I'm compiling with C# 2010 and .NET 4.0.]
That is not true.
The default accessibility for enum types is the same as any other type; internal for top-level types and private for nested types.
The pages you linked to state that the default (and, in fact, only) accessibility level for enum members (Red
, Blue
, etc) is public.
The mentioned MSDN articles and SO answer refer to "enum member" - i.e. e.g Test.Color.RED
, not Test.Color
as the enum itself.
Test.Color
is a member of class - thus private.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With