Всякий раз, когда получается экземпляр класса, создается также объект, содержащий собственную копию каждой переменной экземпляра, определенной в данном классе. Таким образом, каждый объект типа Building
будет содержать свои копии переменных экземпляра Floors, Area и Occupants
. Для доступа к этим переменным служит оператор доступа к члену класса, который принято называть
В этой форме объект указывается слева, а 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 " +
areaPP + " приходится на одного человека");
}
}
Эта программа состоит из двух классов: 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
Если вы пользуетесь интегрированной средой разработки Visual Studio, то вам нужно ввести оба упомянутых выше файла в свой проект и затем скомпоновать их.