Описание тега static
Static functions may be defined within the context of a type but the static function can be called without having an instance of the type.
Static fields may be defined within the context of a type, but the storage location for that field is not part of memory allocated to each instance of that type. The static field is allocated from a global storage area.
In C# and C++, a static constructor executes initialization code before the first use of the type and is only executed once for the lifetime of the process. This is different from a normal constructor which initializes a new instance of the class and executes for every new instance of the type.
The word "static" means "unchanging" in other contexts but not in this one: the contents of static fields can usually be modified at runtime. In this context it means "standing still", from the compiler/ linker term meaning that the storage location (memory address) of a static field is calculated at link time and never changes at runtime, so it appears in the object code as a constant. This is different from an instance field whose address is relative to the start of each object instance's memory block, which will be different for each object instance.
Other usage of the term static might refer to any relatively constant data. For example: in information retrieval, the output of pagerank may be referred to as the static score of a page, which will provide a boost to the dynamic score the page will get from a different algorithm.