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('Дом имеет: ' +
house.Floors + ' этажап ' + house.Occupants + ' жильцап ' + house.Area +
' кв. футов общей площади, из нихп ' + areaPP + ' приходится на одного человека');
// Вычислить площадь на одного человека в учреждении. areaPP = office.Area / office.Occupants;
Console.WriteLine('Учреждение имеет: ' +
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# для объектов всех классов должна быть динамически распределена память.
Как и следовало ожидать, объявление переменной house можно отделить от создания объекта, на который она ссылается, следующим образом.
Building house; // объявить ссылку на объект
house = new Building(); // распределить память для объекта типа Building
В первой строке объявляется переменная house в виде ссылки на объект типа Building. Следовательно, house — это переменная, которая может ссылаться на объект, хотя сама она не