}
class RetObj {
static void Main() {
Rect rl = new Rect(4, 5);
Console.Write('Размеры прямоугольника rl: '); rl.Show ();
Console.WriteLine('Площадь прямоугольника rl: ' + rl.AreaO);
Console.WriteLine();
// Создать прямоугольник в два раза больший прямоугольника rl.
Rect r2 = rl.Enlarge(2);
Console.Write('Размеры прямоугольника г2: '); r2.Show();
Console.WriteLine('Площадь прямоугольника г2: ' + г2.Агеа());
}
}
Выполнение этой программы дает следующий результат.
Размеры прямоугольника rl: 4 5 Площадь прямоугольника rl: 20
Размеры прямоугольника г2: 8 10 Площадь прямоугольника г2: 80
Когда метод возвращает объект, последний продолжает существовать до тех пор, пока не останется ссылок на него. После этого он подлежит сборке как 'мусор'. Следовательно, объект не уничтожается только потому, что завершается создавший его метод.
Одним из практических примеров применения возвращаемых данных типа объектов служит
// Использовать фабрику класса.
using System;
class MyClass {
int a, b; // закрытые члены класса
// Создать фабрику для класса MyClass. public MyClass Factory(int i, int j) {
MyClass t = new MyClass ();
t.a = i; t.b = j;
return t; // возвратить объект
}
public void Show() {
Console.WriteLine('а и b: ' + a + ' ' + b);
}
}
class MakeObjects { static void Main() {
MyClass ob = new MyClass (); int i, j;
// Сформировать объекты, используя фабрику класса. for(i=0, j =10; i < 10; i++, j —) {
MyClass anotherOb = ob.Factory(i, j); // создать объект anotherOb.Show();
}
Console.WriteLine () ;
}
}
Вот к какому результату приводит выполнение этого кода.
а и Ь: 0 10 а и Ь: 19 а и Ь: 2 8 а и b: 3 7 а и Ь: 4 6 а и Ь: 5 5 а и Ь: 6 4
а и b: 7 3 а и b: 8 2 а и b: 9 1
Рассмотрим данный пример более подробно. В этом примере конструктор для класса МуС lass не определяется, и поэтому доступен только конструктор, вызываемый по умолчанию. Это означает, что значения переменных а и b нельзя задать с помощью конструктора. Но в фабрике класса Factory () можно создать объекты, в которых задаются значения переменных а и Ь. Более того, переменные а и b
