Access modifiers (or access specifiers) are keywords in object-oriented languages that set the accessibility of classes, methods, and other members. Access modifiers are a specific part of programming language syntax used to facilitate the encapsulation of components.
Summary of the article:
1) The default access modifier is private for class members.
2) A class marked as internal can have its access limited to the current assembly only.
3) Namespaces as we see by default can have no accessibility specifiers at all. They are by default public and we cannot add any other access modifier including public again too.
4) A class can only be public or internal. It cannot be marked as protected or private. The default is internal for the class.
5) Members of a class can be marked with all the access modifiers, and the default access modifier is private.
6) Protected internal means that the derived class and the class within the same source code file can have access.
7) Between public and internal, public always allows greater access to its members.
8) Base class always allows more accessibility than the derived class.
9) The return values of a method must have greater accessibility than that of the method itself.
10) A class marked sealed can’t act as a base class to any other class.
11) Since we cannot derive from sealed classes, the code from the sealed classes cannot be overridden.
12) We need to initialize the const variable at the time we create it. We are not allowed to initialize it later in our code or program.
13) Like classes, const variables cannot be circular, i.e., they cannot depend on each other.
14) A const field of a reference type other than string can only be initialized with null.
15) One can only initialize a const variable to a compile time value, i.e., a value available to the compiler while it is executing.
16) A constant by default is static and we can’t use the instance reference, i.e., a name to reference a const. A const has to be static as no one will be allowed to make any changes to a const variable.
17) A const variable cannot be marked as static.
18) A variable in C# can never have an uninitialized value.
19) Static variables are always initialized when the class is loaded first. An int is given a default value of zero and a bool is given a default of False.
20) An instance variable is always initialized at the time of creation of its instance.
21) A static readonly field cannot be assigned to (except in a static constructor or a variable initializer).