Member

Members make up the content of types (classes, interfaces etc). They define and give functionality to their classes.

Members come in two flavors

 * Static Members are associated with the class as a whole. They are shared across any instances and threads and should be protected using some form of data synchronization (http://www.anticipatingminds.com/Content/Products/devAdvantage/KnowledgePacks/Threading/ThreadingKnowledgePack.aspx )


 * Instance Members (the default) are associated with an instance (object) of a class

There are several types of members

 * Data Members
 * Fields (variables and properties)
 * Constants
 * Events
 * Function Members
 * Methods
 * Modifiers
 * Abstract
 * Have no implementation and MUST be overridden
 * Only exist inside Abstract Classes
 * Virtual
 * MAY have an implementation and MAY be overridden
 * Override
 * Provides an implementation in a derived class of a method defined by a base class as Abstract or Virtual
 * May be overridden itself
 * Sealed
 * Provides an implementation in a derived class of a method defined by a base class as Abstract or Virtual
 * May NOT be overridden itself
 * New
 * Provides an implementation in a derived class of a method defined by a base class as Abstract or Virtual
 * Hides the base implementation
 * Variables
 * Variables declared within a method are called Local Variables and have a scope of only within that method.
 * Properties
 * Constructors
 * Finalizers (deconstructors)
 * Operators
 * Indexers

Accessibility / Scope
The scope of a member determines what other code can see and access it. Scope is indicated through modifiers where the member is defined. Five scopes are available to Members.


 * Public
 * All code
 * Private
 * Any code inside its containing type
 * Protected
 * Any code inside its containing type AND code inside derived types
 * Internal
 * Any code inside its containing assembly
 * Protected Internal
 * Any code inside its containing assembly AND code inside derived types