Введение в теорию программирования. Объектно-ориентированный подход

         

что для перечислимых констант должно


Color c = Color.blue;

Заметим, что для перечислимых констант должно быть указано полное имя:

Access a = Access.personal | Access.group; if((Access.personal & a) != 0) Console.WriteLine("access granted");

Подобно языку программирования SML в языке C# реализована возможность определения типа для того или иного языкового объекта. Для реализации такой возможности используется оператор typeof, который для любого заданного типа возвращает дескриптор этого типа.

Заметим, что дескриптор типа для объекта o возвращается операцией o.GetType(). Рассмотрим пример, иллюстрирующий использование оператора typeof:

Type t = typeof(int); Console.WriteLine(t.Name);

При выполнении данного примера тип рассматриваемого выражения будет определен системой как Int32, что вполне соответствует данным из сравнительной таблицы отображения типов языковых объектов C# и SML в систему типизации CTS Microsoft .NET.

Еще одной практически важной конструкцией C#, оперирующей типами, является оператор sizeof, который возвращает размер элемента данного типа (в байтах). Данный оператор применим только к типам-значениям и используется лишь в блоках небезопасного кода (т.к. размер структур может изменяться в зависимости от среды реализации); необходима компиляция кода командой

csc /unsafe xxx.cs.

Приведем пример использования оператора sizeof (заметим, что блоки небезопасного C#-кода выделяются посредством ключевого слова unsafe):

unsafe { Console.WriteLine( sizeof(int)); Console.WriteLine( sizeof(MyEnumType)); Console.WriteLine( sizeof(MyStructType)); }

Одним из важнейших видов основных объектов языка программирования C# являются структуры (аналоги структур имеются и в языке SML; в языках функционального программирования с примитивной системой типизации аналогами структур могут служить списки).

Рассмотрим пример описания структуры Point, моделирующей точку на плоскости:

struct Point { public int x, y; public Point (int x, int y) { this.x = x; this.y = y; } public void MoveTo (int a,int b) { x=a; y=b; } }


Содержание  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий