What are access modifiers in C#?

Answer

C# access modifiers control the visibility of types and members. public: accessible from anywhere. private: accessible only within the same class/struct (default for members). protected: accessible within the class and derived classes. internal: accessible within the same assembly (DLL/EXE). protected internal: accessible from the same assembly OR from derived classes in any assembly. private protected (C# 7.2+): accessible only from derived classes within the same assembly. file (C# 11+): accessible only within the same source file. Default for types (classes, enums) in a namespace is internal. Default for members in a class is private. Principle: use the most restrictive access modifier possible to maintain good encapsulation.