The entire program is accessible. This implies that another method or another assembly that contains the class reference, can access these members or types. Access to the public members is not restricted.
To hide member variables and functions, use the Private Access Specifier. Access is limited and only usable within the current assembly.
This type of access has a limited scope and is accessible within the class. In case of inheritance, it is also accessible within sub class or child class.
Any class or type that is declared as internal is accessible anywhere within the same namespace because access is limited to the current assembly alone. In C#, Internal is the default if no access modifier is specified.
The current assembly and types derived from the containing class have access. Variables are accessible to all members of the current project and derived class.
Access is limited to the current assembly's containing class or types derived from the containing class. This modifier is valid in C# version 7.2 and later.