Mar012011

Public, Private, and Protected

I was asked a really good question today (and I had to Google for the answer): what are public, private, and protected keywords called in C# (or other programming language)?

Access Modifiers![fn]1[/fn]

In C#, that includes the following keywords (via Access Modifiers on MSDN):

public: The type or member can be accessed by any other code in the same assembly or another assembly that references it.

private: The type or member can be accessed only by code in the same class or struct.

protected: The type or member can be accessed only by code in the same class or struct, or in a class that is derived from that class.

internal: The type or member can be accessed by any code in the same assembly, but not from another assembly.

protected internal: The type or member can be accessed by any code in the assembly in which it is declared, or from within a derived class in another assembly. Access from another assembly must take place within a class declaration that derives from the class in which the protected internal element is declared, and it must take place through an instance of the derived class type.

Sometimes it's the simplest things you can't remember.

[footnote name="1"]Access modifiers could also be considered a subset of encapsulation.[/footnote]