Ответ
Модификатор static в C# означает, что член (поле, свойство, метод, событие) или весь класс принадлежит самому типу, а не конкретному экземпляру (объекту) этого типа. Это позволяет использовать член без создания экземпляра класса.
Основные случаи использования:
-
Статические члены класса:
- Статические поля/свойства: Существуют в единственном экземпляре для всего приложения, общие для всех объектов класса. Часто используются для констант, настроек или кэшей.
-
Статические методы: Могут быть вызваны напрямую через имя класса. Не имеют доступа к нестатическим полям и методам, так как для них не существует контекста
this.public class MathHelper { // Статическое поле-счётчик public static int CallCount { get; private set; } = 0; // Статический метод public static int Add(int a, int b) { CallCount++; // Увеличиваем общий счётчик return a + b; } }
// Использование: int sum = MathHelper.Add(5, 3); // Вызов без создания объекта Console.WriteLine(MathHelper.CallCount); // 1
-
Статический класс:
- Нельзя создать его экземпляр с помощью
new. - Может содержать только статические члены.
- Часто используется для утилитарных классов (например,
Math,Console).public static class Logger { public static void Log(string message) { Console.WriteLine($"[{DateTime.Now}] {message}"); } }
// Использование: Logger.Log("Application started");
- Нельзя создать его экземпляр с помощью
Важно: Из-за общего состояния статические поля требуют осторожности в многопоточных сценариях, так как могут стать источником состояния гонки (race condition).