What does the “private” modifier do?

前端 未结 13 985
予麋鹿
予麋鹿 2021-01-17 07:24

Considering \"private\" is the default access modifier for class Members, why is the keyword even needed?

13条回答
  •  无人共我
    2021-01-17 07:52

    Private is only the default for methods on a type, but the private modifier is used elsewhere.

    From C# Language Specification 3.0 (msdn) Section 3.5.1

    Depending on the context in which a member declaration takes place, only certain types of declared accessibility are permitted. Furthermore, when a member declaration does not include any access modifiers, the context in which the declaration takes place determines the default declared accessibility.

    • Namespaces implicitly have public declared accessibility. No access modifiers are allowed on namespace declarations.
    • Types declared in compilation units or namespaces can have public or internal declared accessibility and default to internal declared accessibility.
    • Class members can have any of the five kinds of declared accessibility and default to private declared accessibility. (Note that a type declared as a member of a class can have any of the five kinds of declared accessibility, whereas a type declared as a member of a namespace can have only public or internal declared accessibility.)
    • Struct members can have public, internal, or private declared accessibility and default to private declared accessibility because structs are implicitly sealed. Struct members introduced in a struct (that is, not inherited by that struct) cannot have protected or protected internal declared accessibility. (Note that a type declared as a member of a struct can have public, internal, or private declared accessibility, whereas a type declared as a member of a namespace can have only public or internal declared accessibility.)
    • Interface members implicitly have public declared accessibility. No access modifiers are allowed on interface member declarations.
    • Enumeration members implicitly have public declared accessibility. No access modifiers are allowed on enumeration member declarations.

提交回复
热议问题