Читаем C# 4.0 полное руководство - 2011 полностью

// Нестатический метод, void NonStaticMeth    {

Console.WriteLine("В методе NonStaticMeth.");

}

/* Ошибка! Непосредственный вызов нестатического метода из статического метода недопустим. */ static void staticMeth {

NonStaticMeth; // не подлежит компиляции!

}

}

В данномслучаепопытка вызвать нестатический метод (т.е. метод экземпляра) из статического метода приводит к ошибке во время компиляции.

Следует особо подчеркнуть, что из метода типаstaticнельзя вызывать методы экземпляра и получать доступ к переменным экземпляра его класса, как это обычно делается посредством объектов данного класса. И объясняется это тем, что без указания конкретного объекта переменная или метод экземпляра оказываются недоступными. Например, приведенный ниже фрагмент кода считается совершенно верным.

class MyClass -{

// Нестатический метод, void NonStaticMeth    {

Console.WriteLine("В методе NonStaticMeth.");

}

/* Нестатический метод может быть вызван из статического метода по ссылке на объект. */ public static void staticMeth(MyClass ob) { ob.NonStaticMeth; // все верно!

}

}

В данном примере метод NonStaticMeth вызывается из метода staticMeth по ссылке на объект ob типа MyClass.

Поля типа static не зависят от конкретного объекта, и поэтому они удобны для хранения информации, применимой ко всему классу. Ниже приведен пример программы, демонстрирующей подобную ситуацию. В этой программе поле типа static служит для хранения количества существующих объектов.

// Использовать поле типа static для подсчета // экземпляров существующих объектов.

using System;

class Countlnst {

static int count = 0;

// Инкрементировать подсчет, когда создается объект.

public Countlnst    {

count++;

}

// Декрементировать подсчет, когда уничтожается объект.

~CountInst { count—;

}

public static int GetCountO { return count;

}

}

class CountDemo {

static void Main {

Countlnst ob;

for(int i=0; i < 10; i++)    {

ob = new CountlnstO;

Console.WriteLine("Текущий подсчет: " + Countlnst.GetCount);

}

}

}

Выполнение этой программы приводит к следующему результату.

Текущий подсчет: 1 Текущий подсчет: 2 Текущий подсчет: 3 Текущий подсчет: 4 Текущий подсчет: 5 Текущий подсчет: 6 Текущий подсчет: 7 Текущий подсчет: 8 Текущий подсчет: 9 Текущий подсчет: 10

Перейти на страницу:

Похожие книги

Access 2002: Самоучитель
Access 2002: Самоучитель

В книге рассматривается широкий круг вопросов, связанных с использованием программной среды Access 2002, которая является составной частью пакета Office 2002 и предназначена для создания банка данных в самых различных предметных областях.Подробно описывается методика проектирования объектов базы данных (таблицы, формы, отчеты, страницы доступа к данным, запросы, модули).Детально обсуждаются вопросы создания интегрированной базы данных в единой среде Access 2002: формирование БД с нуля, конвертирование в программную среду баз данных, созданных в ином программном окружении – Clarion, FoxPro.Особое внимание уделяется формированию разнообразных запросов к интегрированной базе данных Access 2002 с использованием языков программирования SQL, VBA и макросов.Приводятся общие сведения о возможностях языка обмена данными между различными компьютерами и приложениями (XML). Описываются возможности использования гиперссылок, связывающих базу данных с другими программными продуктами. Объясняется, как можно работать с базой данных Access 2002 без установки ее на компьютер, используя технологию ODBC (Open Data Base Connectivity). В приложениях приводятся количественные параметры Access 2002 и связанная с этой СУБД терминология.Предлагаемая книга будет полезна специалистам, занимающимся практической разработкой банков данных и приложений на их основе, а также студентам вузов, изучающим информатику.

Павел Юрьевич Дубнов

Программирование, программы, базы данных / ОС и Сети / Книги по IT