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