Короче говоря, статический означает «связанный с типом, а не с одним экземпляром типа». Таким образом, существует один набор статических переменных для типа (в пределах домена приложения), независимо от того, есть ли у вас 0 экземпляров или миллион; вам не нужен экземпляр для доступа к статическому члену и т. д.
Точная точная *1006* точка инициализации статических переменных зависит от того, есть ли также статический конструктор или нет, но в широком смысле это «один раз, обычно прежде, чем что-либо существенное происходит в классе». (Более подробное описание см. в этом блоге .)
Хотя readonly
поля могут быть статическими или экземплярами (т. Е. Связанными с типом или связанными с экземпляром типа), const
значения всегда неявно статичны (они компилируются постоянные времени, поэтому не имеет смысла иметь одну копию на экземпляр).
Вы можете иногда видеть, что static
описывается как "общий для всех экземпляров типа" - лично мне не нравится это описание, поскольку оно предполагает, что должен быть хотя бы один экземпляр ... тогда как на самом деле вам не нужно каких-либо экземпляров, чтобы использовать статический член. Я предпочитаю думать о них как о совершенно отдельных, а не как о «общих» экземплярах.