В C# ключевое слово staticиспользуется для определения членов (методов, свойств, полей и событий), принадлежащих самому типу, а не экземпляру типа. Когда член объявлен как static, это означает, что к нему можно получить доступ напрямую, используя имя типа, без создания экземпляра класса.
Вот некоторые распространенные варианты использования и значения ключевого слова staticв C#:
- Статические методы: это методы, которые можно вызывать непосредственно в классе, не создавая экземпляр класса. Они часто используются для служебных функций или операций, которые не требуют доступа к данным, специфичным для экземпляра.
Пример:
public class MathUtils
{
public static int Add(int a, int b)
{
return a + b;
}
}
Чтобы вызвать статический метод Add, вы можете использовать:
int result = MathUtils.Add(5, 3);
- Статические свойства: это свойства, которые имеют одно значение, общее для всех экземпляров класса. Доступ к ним осуществляется по имени класса, и их можно использовать для хранения глобальных значений или значений по умолчанию.
Пример:
public class Settings
{
public static string DefaultLanguage { get; set; } = "English";
}
Чтобы получить доступ к статическому свойству DefaultLanguage, вы можете использовать:
string language = Settings.DefaultLanguage;
- Статические поля: это переменные, которые являются общими для всех экземпляров класса. Они сохраняют свою ценность на протяжении всего существования программы и часто используются для поддержания общего состояния или счетчика.
Пример:
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();
- Статические классы: это классы, экземпляры которых невозможно создать, и они содержат только статические члены. Они обычно используются для организации служебных функций или создания методов расширения.
Пример:
public static class StringUtils
{
public static bool IsPalindrome(string str)
{
// Implementation
}
}
Чтобы использовать статические методы класса StringUtils:
bool isPalindrome = StringUtils.IsPalindrome("racecar");