Понимание ключевого слова «static» в C# и примеры его использования

В C# ключевое слово staticиспользуется для определения членов (методов, свойств, полей и событий), принадлежащих самому типу, а не экземпляру типа. Когда член объявлен как static, это означает, что к нему можно получить доступ напрямую, используя имя типа, без создания экземпляра класса.

Вот некоторые распространенные варианты использования и значения ключевого слова staticв C#:

  1. Статические методы: это методы, которые можно вызывать непосредственно в классе, не создавая экземпляр класса. Они часто используются для служебных функций или операций, которые не требуют доступа к данным, специфичным для экземпляра.

Пример:

public class MathUtils
{
    public static int Add(int a, int b)
    {
        return a + b;
    }
}

Чтобы вызвать статический метод Add, вы можете использовать:

int result = MathUtils.Add(5, 3);
  1. Статические свойства: это свойства, которые имеют одно значение, общее для всех экземпляров класса. Доступ к ним осуществляется по имени класса, и их можно использовать для хранения глобальных значений или значений по умолчанию.

Пример:

public class Settings
{
    public static string DefaultLanguage { get; set; } = "English";
}

Чтобы получить доступ к статическому свойству DefaultLanguage, вы можете использовать:

string language = Settings.DefaultLanguage;
  1. Статические поля: это переменные, которые являются общими для всех экземпляров класса. Они сохраняют свою ценность на протяжении всего существования программы и часто используются для поддержания общего состояния или счетчика.

Пример:

public class Counter
{
    private static int count = 0;
    public static void Increment()
    {
        count++;
    }
    public static int GetCount()
    {
        return count;
    }
}

Чтобы использовать статические поля и методы класса Counter:

Counter.Increment();
int count = Counter.GetCount();
  1. Статические классы: это классы, экземпляры которых невозможно создать, и они содержат только статические члены. Они обычно используются для организации служебных функций или создания методов расширения.

Пример:

public static class StringUtils
{
    public static bool IsPalindrome(string str)
    {
        // Implementation
    }
}

Чтобы использовать статические методы класса StringUtils:

bool isPalindrome = StringUtils.IsPalindrome("racecar");