12
СТАТИЧЕСКИЕ КЛАССЫ И СТАТИЧЕСКИЕ ЧЛЕНЫ КЛАССА C# 4.0

Cтатические классы и статические члены класса

Embed Size (px)

Citation preview

Page 1: Cтатические классы и статические члены класса

СТАТИЧЕСКИЕ КЛАССЫ И

СТАТИЧЕСКИЕ ЧЛЕНЫ КЛАССА

C# 4.0

Page 2: Cтатические классы и статические члены класса

Понятие ключевого слова static

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

Page 3: Cтатические классы и статические члены класса

Пример

// Ошибка! WriteLine() не является методом уровня объекта1 Console с = new Console (); с.WriteLine("...");

// Правильно! WriteLine() - статический метод. Console.WriteLine("Thanks...");

Page 4: Cтатические классы и статические члены класса

Определение статических методов

class Teenager { public static Random r = new Random(); public static int GetRandomNumber(short upperLimit) { return r.Next(upperLimit); } public static string Complain () { stnng[] messages = {"1", «2", "3", "4'", "5"}; return messages[GetRandomNumberE)]; } }

Page 5: Cтатические классы и статические члены класса

Статические члены могут оперировать только статическими данными и вызывать статические методы определяющего их класса. Попытка использования нестатических данных класса или вызова нестатического метода класса внутри реализации статического члена приводит к ошибке времени компиляции.

Page 6: Cтатические классы и статические члены класса

Определение статических полей данных

class SavingsAccount { public static double currlnterestRate = 0.04; }

Page 7: Cтатические классы и статические члены класса

Определение статических полей данных

currInterestRate=0.04

SavingsAccount1

SavingsAccount2

SavingsAccount3

Page 8: Cтатические классы и статические члены класса

Определение статических конструкторов

//неверно, значение сбрасыветсяpublic SavingsAccount(double balance) { currlnterestRate = 0.04; currBalance = balance; }

Page 9: Cтатические классы и статические члены класса

Определение статических конструкторов

//Нет возможности поменять статические данныеclass SavingsAccount { public double currBalance; // Статические данные. public static double currlnterestRate = 0.04; }

Page 10: Cтатические классы и статические члены класса

Определение статических конструкторов

static SavingsAccount () { currlnterestRate = 0.04; }

Page 11: Cтатические классы и статические члены класса

Определение статических конструкторов

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

Page 12: Cтатические классы и статические члены класса

Определение статических классов

Основные характеристики статического класса:

• Содержит только статические члены.• Создавать его экземпляры нельзя.• Он закрыт.• Не может содержать нестатических конструкторов