The default modifier in C,
Refer to Default visibility for C # classes and members (fields, methods, etc )?
Classes and structs that are declared directly within a namespace (in other words, that are not nested within other classes or structs) can be either public or internal. internal is the default if no access modifier is specified.
Directly declare the classes and struct in the namespace. The default value is internal.
The access level for class members and struct members, including nested classes and structs, is private by default.
Class and struct members, including embedded classes and struct. The default value is private.
Interfaces default to internal access.
The interface is internal by default.
Delegates behave like classes and structs. By default, they have internal access when declared directly within a namespace, and private access when nested.
The delegate is similar to the class and struct. Directly declare that the access permission in the namespace is internal by default. If embedded, it is private.
Top-level types, which are not nested in other types, can only have internal or public accessibility. The default accessibility for these types is internal.
In summary, the highest level of type (not embedded in other types) can only have internal and public access permissions. The default access permission for these types is internal.
However, for Embedded types
And for nested types:
Members of Default member accessibility
--------------------------------------
Enum public // The enum member has the public access permission.
Class private // a member of the class, which is the access permission of private by default
Interface public // interface member. The default value is public access permission.
Struct private // a struct member. Similar to class, the default access permission is private.