На этом шаге мы рассмотрим особенности описания и использования статических методов класса.
Поля и методы могут быть статическими. Особенность статических полей и методов в том, что они могут использоваться без создания объектов.
Статические члены класса описываются с ключевым словом static. Для обращения к статическому члену класса (полю или методу) указывается имя класса, после которого через точку указывают имя поля или имя метода (с аргументами или без). Таким образом, если при обращении к обычным полям и методам нам нужно указать объект, то при обращении к статическим полям и методам вместо объекта указывается класс. Если статическое поле или метод используются в том же классе, где они описаны, то имя класса при обращении к полю или методу можно не указывать.
При обращении к статическому полю или при вызове статического метода вместо имени класса можно указать и имя объекта этого класса, причем объект может быть любым (главное, чтобы того класса, в котором описан статический член). Во всех случаях речь идет о статических членах. Но обращаться к статическому члену через объект все же нежелательно, поскольку в этом случае создается иллюзия, что соответствующее поле или метод являются обычными (не статическими), а это не так.
При работе со статическими методами существует очевидное ограничение: статический метод может обращаться только к статическим полям и методам в классе. Объяснение простое: поскольку статический метод существует без привязки к объекту, то нет смысла обращаться к полям и методам объекта (поскольку объекта как такового нет).
Ниже приведен текст программы, к которой используется класс со статическим полем и методом.
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(); .
На следующем шаге мы закончим изучение этого вопроса.