Метод может возвратить данные любого типа, в том числе и тип класса. Ниже в качестве примера приведен вариант класса Rect, содержащий метод Enlarge(), в котором строится прямоугольник с теми же сторонами, что и у вызывающего объекта прямоугольника, но пропорционально увеличенными на указанный коэффициент.
//возвратить обьект из метода.
using System;
class Rect
{
int width, height;
public Rect(int w, int h)
{
width = w;
height = h;
}
public int Area()
{
return width * height;
}
public void Show()
{
Console.WriteLine(width + " " + height);
}
/*метод возвращает прямоугольник со сторонами, пропорционально увеличенными на
указанный коэффициент по сравнению с вызывающим обьектом прямоугольника. */
public Rect Enlarge(int factor)
{
return new Rect(width * factor, height * factor);
}
}
class RetOgj
{
static void Main()
{
Rect r1 = new Rect(4, 5);
Console.Write("Размеры прямоугольника r1: ");
r1.Show();
Console.WriteLine("Площадь прямоуголника r1: " + r1.Area());
Console.WriteLine();
//создать прямоуголник в два раза больший прямоугольника r1
Rect r2 = r1.Enlarge(2);
Console.Write("Размеры прямоуголника r2: ");
r2.Show();
Console.WriteLine("Площадь прямоугольника r2: " + r2.Area());
|
|
}
}
Одним из практических примеров применения возвращаемых данных типа объектов служит фабрика класса, которая представляет собой метод, предназначенный для построения объектов его же класса. В ряде случаев предоставлять пользователям класса доступ к его конструктору нежелательно из соображений безопасности или же потому, что построение объекта зависит от некоторых внешних факторов. В подобных случаях для построения объектов используется фабрика класса. Обратимся к простому примеру.
//использовать фабрику класса.
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();
}
}