На первый взгляд, переменныеhouselиhouse2ссылаются на совершенно разные объекты, но на самом деле это не так. Переменныеhouselиhouse2, напротив, ссылаются на один и тот же объект. Когда переменнаяhouselприсваивается переменойhouse2, то в конечном итоге переменнаяhouse2просто ссылается на тот же самый объект, что и переменнаяhousel.Следовательно, этим объектом можно оперировать с помощью переменнойhouselилиhouse2. Например, после очередного присваивания
housel.Area = 2600;оба методаWriteLine
Console.WriteLine(housel.Area);
Console.WriteLine(house2.Area);
выводят одно и то же значение: 2600.
Несмотря на то что обе переменные,houselиhouse2, ссылаются на один и тот же объект, они никак иначе не связаны друг с другом. Например, в результате следующей последовательности операций присваивания просто изменяется объект, на который ссылается переменнаяhouse2.
Building housel = new Building;
Building house2 = housel;
Building house3 = new Building;
house2 = house3; // теперь обе переменные, house2 и house3,
// ссылаются на один и тот же объект.
После выполнения этой последовательности операций присваивания переменнаяhouse2ссылается на тот же самый объект, что и переменнаяhouse3.А ссылка на объект в переменнойhouselне меняется.
Методы
Как пояснялось выше, переменные экземпляра и методы являются двумя основными составляющими классов. До сих пор классBuilding,рассматриваемый здесь в качестве примера, содержал только данные, но не методы. Хотя классы, содержащие только данные, вполне допустимы, у большинства классов должны быть также методы.
Метод состоит из одного или нескольких операторов. В грамотно написанном коде C# каждый метод выполняет только одну функцию. У каждого метода имеется свое имя, по которому он вызывается. В общем, методу в качестве имени можно присвоить любой действительный идентификатор. Следует, однако, иметь в виду, что идентификаторMain зарезервирован для метода, с которого начинается выполнение программы. Кроме того, в качестве имен методов нельзя использовать ключевые слова С#.