Всякий раз, когда получается экземпляр класса, создается также объект, содержа щий собственную копию каждой переменной экземпляра, определенной в данном классе. Таким образом, каждый объект типа Building будет содержать свои копии переменных экземпляра Floors, Area и Occupants. Для доступа к этим перемен ным служит оператор доступа к члену класса, который принято называть оператором- точкой. Оператор-точка связывает имя объекта с именем члена класса. Ниже приведе на общая форма оператора-точки. объект.член
В этой форме объект указывается слева, а член — справа. Например, присваива ние значения 2 переменной Floors объекта house осуществляется с помощью сле дующего оператора. house.Floors = 2;
В целом, оператор-точка служит для доступа к переменным экземпляра и мето дам. Ниже приведен полноценный пример программы, в которой используется класс Building. // Программа, в которой используется класс Building. using System; class Building { public int Floors; // количество этажей public int Area; // общая площадь здания public int Occupants; // количество жильцов } // В этом классе объявляется объект типа Building. class BuildingDemo { static void Main { Building house = new Building; // создать объект типа Building int areaPP; // площадь на одного человека // Присвоить значения полям в объекте house. house.Occupants = 4; house.Area = 2500; house.Floors = 2; // Вычислить площадь на одного человека. areaPP = house.Area / house.Occupants; Console.WriteLine("Дом имеет:\n " + house.Floors + " этажа\n " + house.Occupants + " жильца\n " + house.Area + " кв. футов общей площади, из них\n " + агеаРР + " приходится на одного человека"); } }
Эта программа состоит из двух классов: Building и BuildingDemo. В классе BuildingDemo сначала создается экземпляр house класса Building с помощью ме тода Main, а затем в коде метода Main осуществляется доступ к переменным эк земпляра house для присваивания им значений и последующего использования этих значений. Следует особо подчеркнуть, что Building и BuildingDemo — это два со вершенно отдельных класса. Единственная взаимосвязь между ними состоит в том, что в одном из них создается экземпляр другого. Но, несмотря на то, что это раздельные классы, у кода из класса BuildingDemo имеется доступ к членам класса Building, поскольку они объявлены как открытые (public). Если бы при их объявлении не был указан спецификатор доступа public, то доступ к ним ограничивался бы пределами Building, а следовательно, их нельзя было бы использовать в классе BuildingDemo. Допустим, что исходный текст приведенной выше программы сохранен в файле UseBuilding.cs. В результате ее компиляции создается файл UseBuilding.exe. При этом оба класса, Building и BuildingDemo, автоматически включаются в состав исполняемого файла. При выполнении данной программы выводится следующий ре зультат. Дом имеет: 2 этажа 4 жильца 2500 кв. футов общей площади, из них 625 приходится на одного человека
Но классам Building и BuildingDemo совсем не обязательно находиться в одном и том же исходном файле. Каждый из них можно поместить в отдельный файл, на пример Building.cs и BuildingDemo.cs, а компилятору C# достаточно сообщить, что оба файла должны быть скомпилированы вместе. Так, если разделить рассматри ваемую здесь программу на два таких файла, для ее компилирования можно восполь зоваться следующей командной строкой. csc Building.cs BuildingDemo.cs