logo search
C#, 320 стр

Встроенные структуры

Как уже говорилось, все значимые типы языка реализованы структурами. В библиотеке FCL имеются и другие встроенные структуры. Рассмотрим в качестве примера структуры Point, PointF, Size, SizeF и Rectangle, находящиеся в пространстве имен System.Drawing и активно используемые при работе с графическими объектами. Первые четыре структуры имеют два открытых поля X и Y (Height и Width), задающие для точек - структур Point и PointF - координаты, целочисленные или в форме с плавающей точкой. Для размеров - структур Size и SizeF - они задают высоту и ширину, целочисленными значениями или в форме с плавающей точкой. Структуры Point и Size позволяют задать прямоугольную область - структуру Rectangle. Конструктору прямоугольника можно передать в качестве аргументов две структуры - точку, задающую координаты левого верхнего угла прямоугольника, и размер - высоту и ширину прямоугольника.

Между четырьмя структурами определены взаимные преобразования: точки можно преобразовать в размеры и наоборот, сложение и вычитание определено над точками и размерами, но не над точками, плавающий тип которых разными способами можно привести к целому. Ряд операций над этими структурами продемонстрирован в следующем примере:

public void TestPointAndSize()

{

Point pt1 = new Point(3,5), pt2 = new Point(7,10), pt3;

PointF pt4 = new PointF(4.55f,6.75f);

Size sz1 = new Size(10,20), sz2;

SizeF sz3 = new SizeF(10.3f, 20.7f);

pt3 = Point.Round(pt4);

sz2 = new Size(pt1);

Console.WriteLine ("pt1: " + pt1);

Console.WriteLine ("sz2 =new Size(pt1): " + sz2);

Console.WriteLine ("pt4: " + pt4);

Console.WriteLine ("pt3 =Point.Round(pt4): " + pt3);

pt1.Offset(5,7);

Console.WriteLine ("pt1.Offset(5,7): " + pt1);

Console.WriteLine ("pt2: " + pt2);

pt2 = pt2+ sz2;

Console.WriteLine ("pt2= pt2+ sz2: " + pt2);

}//TestPointAndSize

Результаты его выполнения показаны на рис. 17.1

Рис. 17.1.  Операции над точками и размерами

Отметим, что метод ToString, определенный для этих структур, выдает строку со значениями полей в приемлемой для восприятия форме.