C# Access Modifier |
Meaning in Life |
public |
Marks a member as accessible from an object variable as well as any derived classes. |
private |
Marks a method as accessible only by the class that has defined the method. In C#, all members are private by default. |
protected |
Marks a method as usable by the defining class, as well as any derived classes. Protected methods, however, are not accessible from an object variable. |
internal |
Defines a method that is accessible by any type in the same assembly, but not outside the assembly. |
protected internal |
Defines a method whose access is limited to the current assembly or types derived from the defining class in the current assembly. |
Code
class Program
{
static void Main(string[] args)
{
// Make an object and attempt to call members.
SomeClass c = new SomeClass();
c.PublicMethod();
c.InternalMethod();
c.ProtectedInternalMethod();
c.PrivateMethod(); // Error!
c.ProtectedMethod(); // Error!
c.SomeMethod(); // Error!
}
// Member visibility options.
class SomeClass
{
// Accessible anywhere.
public void PublicMethod() { }
// Accessible only from SomeClass types.
private void PrivateMethod() { }
// Accessible from SomeClass and any descendent.
protected void ProtectedMethod() { }
// Accessible from within the same assembly.
internal void InternalMethod() { }
// Assembly-protected access.
protected internal void ProtectedInternalMethod() { }
// Unmarked members are private by default in C#.
void SomeMethod() { }
}
}