Данные-члены

Данные-члены — это те члены, которые содержат данные класса — поля, константы, события. Данные-члены могут быть статическими (static). Член класса является членом экземпляра, если только он не объявлен явно как static.

Поля (field) — это любые переменные, ассоциированные с классом. Вы уже видели поля в классе PhoneCustomer в предыдущем примере. После создания экземпляра объекта PhoneCustomer к его полям можно обращаться с использованием синтаксиса Объект.ИмяПоля, как показано в следующем примере:

PhoneCustomer Customerl = new PhoneCustomer();Customerl.FirstName = "Simon";

Константы могут быть ассоциированы с классом тем же способом, что и переменные. Константа объявляется с помощью ключевого слова const. Если она объявлена как public, то в этом случае становится доступной извне класса.

class PhoneCustomer{public const string DayOfSendingBill = "Monday";public int CustomerlD;public string FirstName;public string LastName;}

Для того чтобы продемонстрировать классы на конкретных примерах, разработаем постепенно класс, инкапсулирующий информацию о зданиях, в том числе о домах, складских помещениях, учреждениях и т.д. В этом классе будут храниться три элемента информации о зданиях: количество этажей, общая площадь и количество жильцов. Ниже приведен первый вариант. В нем определены три переменные экземпляра: Floors, Area и Occupants. Как видим, в нём вообще отсутствуют методы. Это означает, что в настоящий момент этот класс состоит только из данных.

using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace BuildingProbe{ class Building { public int Floors; // количество этажей public int Area; // общая площадь здания public int Occupants; // количество жильцов } //В этом классе объявляется объект типа Building, class Program { static void Main(string[] args) { Building house = new Building(); // создать объект типа Building int areaPP; // площадь на одного человека // Присвоить значения полям в объекте house, house.Occupants = 4; house.Area = 250; house.Floors = 2; // Вычислить площадь на одного человека. areaPP = house.Area / house.Occupants; Console.WriteLine("Дом имеет:\n " + house.Floors + " этажа\n " + house.Occupants + " жильца\n " + house.Area + " кв. метров общей площади, из них\n " + areaPP + " приходится на одного человека"); Console.ReadLine(); } }}

Эта программа состоит из двух классов: Building и Program. В классе Program сначала создается экземпляр house класса Building с помощью метода Main (), а затем в коде метода Main () осуществляется доступ к переменным экземпляра house для присваивания им значений и последующего использования этих значений. Следует особо подчеркнуть, что Building и BuildingDemo — это два совершенно отдельных класса. Единственная взаимосвязь между ними состоит в том, что в одном из них создается экземпляр другого. Но, несмотря на то, что это раздельные классы, у кода из класса Program имеется доступ к членам класса Building, поскольку они объявлены как открытые (public). Если бы при их объявлении не был указан спецификатор доступа public, то доступ к ним ограничивался бы пределами Building, а следовательно, их нельзя было бы использовать в классе Program.

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