The "
static
" key word for a class is just a handy fool-proof syntax element. It helps you to get early error message if you try to put a single instance (non-static) member by accident. By definition, static class simply requires all its members to be static (except nested classes).
In contrast to that, static members of the class really have essential semantic meaning. The non-static members are also called
instance member. An instance field is a member of the instance, so a separate field per class instance exists. In contrast, only one static field per Application Domain is created. Static methods do not have the hidden "
this
" parameter representing the class instance, so they cannot address any non-static members.
I explained it all in further detail in my past answers:
What makes static methods accessible?[
^],
Catch 22 - Pointers to interface objects die when function using them is made static.[
^],
C# windows base this key word related and its uses in the application[
^].
—SA