ECMA-334 C# Language Specification16.5: Type declarations |
A type-declaration
is a class-declaration
(17.1), a struct-declaration
(18.1), an interface-declaration
(20.1), an enum-declaration
(21.1), or a delegate-declaration
(22.1).
class-declaration
struct-declaration
interface-declaration
enum-declaration
delegate-declaration
A type-declaration
can occur as a top-level declaration in a compilation unit or as a member declaration within a namespace, class, or struct.
When a type declaration for a type T occurs as a top-level declaration in a compilation unit, the fully qualified name of the newly declared type is simply T. When a type declaration for a type T occurs within a namespace, class, or struct, the fully qualified name of the newly declared type is N.T, where N is the fully qualified name of the containing namespace, class, or struct.
A type declared within a class or struct is called a nested type (17.2.6).
The permitted access modifiers and the default access for a type declaration depend on the context in which the declaration takes place (10.5.1):