На этом шаге мы рассмотрим особенности описания и использования статических методов класса.
Поля и методы могут быть статическими. Особенность статических полей и методов в том, что они могут использоваться без создания объектов.
Со статическими методами мы уже встречались ранее и обсуждали их. Но там речь шла о статических методах, описанных в том же классе, что и главный метод программы. Соответственно, мы использовали
статические методы в том же классе, в котором они были описаны. Но в общем случае статический метод может быть описан в одном классе, а использован в другом.
Статические члены класса описываются с ключевым словом static. Для обращения к статическому члену класса (полю или методу) указывается имя класса, после которого через точку указывают имя поля или имя метода (с аргументами или без). Таким образом, если при обращении к обычным полям и методам нам нужно указать объект, то при обращении к статическим полям и методам вместо объекта указывается класс. Если статическое поле или метод используются в том же классе, где они описаны, то имя класса при обращении к полю или методу можно не указывать.
Статические поля играют роль глобальных переменных. Они "не привязаны" к какому-то конкретному объекту и существуют "сами по себе". Единственное ограничение - статические поля нужно
описывать в классе и при обращении указывать имя этого класса. Аналогично, статические методы в языке C# играют примерно ту же роль, что и функции в языке C++. Статический
метод - это, по сути, блок команд, которые не подразумевают использования объекта, и поэтому для выполнения этих команд (вызова метода) объект как таковой не нужен.
При обращении к статическому полю или при вызове статического метода вместо имени класса можно указать и имя объекта этого класса, причем объект может быть любым (главное, чтобы того класса, в котором описан статический член). Во всех случаях речь идет о статических членах. Но обращаться к статическому члену через объект все же нежелательно, поскольку в этом случае создается иллюзия, что соответствующее поле или метод являются обычными (не статическими), а это не так.
При работе со статическими методами существует очевидное ограничение: статический метод может обращаться только к статическим полям и методам в классе. Объяснение простое: поскольку статический метод существует без привязки к объекту, то нет смысла обращаться к полям и методам объекта (поскольку объекта как такового нет).
Ниже приведен текст программы, к которой используется класс со статическим полем и методом.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pr86_1 { // Класс со статическим полем и методом: class MyClass { // Статическое поле: public static int code = 100; // Статический метод: public static void show() { Console.WriteLine("Статическое поле: " + code); } } class Program { // Класс с главным методом: static void Main() { // Вызов статического метода: MyClass.show(); // Обращение к статическому полю: MyClass.code = 200; // Вызов статического метода: MyClass.show(); // Задержка: Console.ReadLine(); } } }
Ниже представлен результат выполнения программы.

Рис.1. Результат выполнения программы
В программе описывается класс MyClass, у которого есть открытое статическое целочисленное поле code с начальным значением 100, а также статический метод show() (без аргументов и не возвращающий результат). Метод при вызове отображает в консольном окне значение статического поля code.
В главном методе программы командой
// Вызов статического метода: MyClass.show();
MyClass.code = 200; ,
// Вызов статического метода: MyClass.show(); .
На следующем шаге мы закончим изучение этого вопроса.