Short answer:
Yes. =)
Long answer:
In principle, any class methods and properties "exist" before you use
them (as opposed to instance methods and properties that are only
accessible on instances that have to be created during runtime).
Class methods and properties are declared with the static keyword.
In reality, those "statics" are initialized during runtime, so you can
use static constructors, but they are guaranteed to be initialized
before you actually use them.
The order in which they are initialized is non-deterministic, though, so
you can't count on a certain sequence order of initialization.
A whole class can also be declared static, in which case they can only
contain static members and cannot be instantiated.
Examples of static classes provided by the .NET framework and some of
the objects they contain (and consequently exist without your program
having to create them):
System.Console
· Represents the standard input, output, and error streams for console
applications
· Properties
··· In: Gets the standard input stream.
··· Out: Gets the standard output stream.
··· Title: Gets or sets the title to display in the console title bar.
System.Convert
· Converts a base data type to another base data type.
··· DBNull: A constant representing a database null.
System.Environment
· Provides information about, and means to manipulate, the current
environment and platform.
··· MachineName: Gets the NetBIOS name of this local computer.
··· OSVersion: Gets an OperatingSystem object.
··· UserName: Gets the user name of the person currently logged on.
System.GC
· Controls the system garbage collector,
··· MaxGeneration: Gets the maximum number of generations (duh).
System.Math
· Provides constants and static methods for trigonometric, logarithmic,
and other common mathematical functions.
··· E: Represents the natural logarithmic base (e).
··· PI: Represents the constant π.
Etc.
I told you... long answer.
.