C# uses access modifiers (public
, private
, protected
) to control member accessibility within classes and structs. These modifiers define the scope from which a class member (field, property, method) can be accessed. The static
modifier adds another layer of control, defining members that belong to the class itself, not individual instances.
Access Modifiers:
public
: Members declared as public
are accessible from anywhere – within the same assembly or any other assembly referencing it. This provides the broadest accessibility.
private
: Members declared as private
are only accessible from within the class where they are defined. This enforces strong encapsulation and data hiding.
protected
: Members declared as protected
are accessible within the class where they are defined, and also within derived classes (classes that inherit from the original class). This allows controlled inheritance and extension of functionality.
No Modifier (Default): If no access modifier is specified, the default access level is generally internal
. This means the member is accessible only from within the same assembly (project) where it's defined.
Static Modifier:
The static
modifier indicates that a member belongs to the class itself, not to any specific instance of the class. Static members are shared across all instances. Static members are accessed using the class name, not an object instance. Static classes cannot be instantiated.
Illustrative Example:
public class ExampleClass { private int privateVar; protected int protectedVar; public int publicVar; static int staticVar; public void PublicMethod() { } private void PrivateMethod() { } protected void ProtectedMethod() { } static void StaticMethod() { } public static void Main(string[] args) { ExampleClass instance = new ExampleClass(); instance.publicVar = 10; instance.PublicMethod(); // instance.privateVar = 20; // Error: private // instance.PrivateMethod(); // Error: private ExampleClass.staticVar = 5; ExampleClass.StaticMethod(); } }
In this example, publicVar
and PublicMethod
are freely accessible. privateVar
and PrivateMethod
are only accessible within ExampleClass
. protectedVar
and ProtectedMethod
are accessible within ExampleClass
and any classes inheriting from it. staticVar
and StaticMethod
are accessed directly through the class name.
Practical Applications:
Access modifiers are fundamental to object-oriented design principles like encapsulation and abstraction. They help control how different parts of your application interact, promoting code maintainability and reducing unintended side effects. Static members are useful for utility functions or constants that don't require an object instance.
The above is the detailed content of How Do Access Modifiers (public, private, protected) and the Static Modifier Affect Member Accessibility in C#?. For more information, please follow other related articles on the PHP Chinese website!