Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
40.doc
Скачиваний:
14
Добавлен:
30.04.2022
Размер:
646.66 Кб
Скачать

7.2. Тип структур

Теперь рассмотрим использование типов структур (struct) в .NET. Типы структур прекрасно подходят для моделирования математических, геометрических и прочих "атомарных" сущностей в приложении. Они (как и перечисления) представляют собой определяемые пользователем типы, однако (в отличие от перечислений) просто коллекциями пар "имя/значение" - не являются. Вместо этого они скорее представляют собой типы, способные содержать любое количество полей данных и членов, выполняющих над ними какие-то операции.

В С# структуры создаются с помощью ключевого слова struct:

struct Point

{

// Поля структуры.

public int X;

public int Y;

// Добавление 1 к позиции (X, Y) .

public void Increment ()

{

X++; Y++;

}

// Вычитание 1 из позиции (X, Y) .

public void Decrement ()

{

X--; Y—;

}

// Отображение текущей позиции.

public void Display()

{

Console.WriteLine("X = {0}, Y= {1}", X, Y) ;

}

}

Здесь определены два целочисленных поля (X и Y) с использованием ключевого слова public, которое представляет собой один из модификаторов управления доступом. Объявление данных с использованием ключевого слова public гарантирует наличие у вызывающего кода возможности напрямую получать к ним доступ из данной переменной Point (через операцию точки).

Для создания переменной типа структуры на выбор доступно несколько вариантов.

Первый, когда просто создается переменная Point с присваиванием значений каждому из ее общедоступных элементов данных типа полей перед вызовом ее членов. Если значения общедоступным элементам структуры не присвоены перед ее использованием, компилятор сообщит об ошибке.

// Ошибка! Полю Y не было присвоено значение.

Point pi;

pl.X = 10;

pi.Display();

// Все в порядке1 Обоим полям были присвоены

// значения перед использованием.

Point p2;

р2.Х = 10;

p2.Y = 10;

р2.Display();

В качестве альтернативного варианта переменные типа структур можно создавать с применением ключевого слова new, поддерживаемого в С#, что предусматривает вызов для структуры конструктора по умолчанию. По определению используемый по умолчанию конструктор не принимает никаких аргументов. Преимущество подхода с вызовом для структуры конструктора по умолчанию состоит в том, что в таком случае каждому элементу данных полей автоматически присваивается соответствующее значение по умолчанию:

// Установка для всех полей значений по умолчанию

//за счет применения конструктора по умолчанию.

Point pi = new Point () ;

// Выводит Х=0, Y=0

pi.Display();

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

Основные различия классов и структур:

1) Класс и структура принадлежат к двум различным категориям типов – типов-ссылок и типов-значений. То есть присвоение одной структуры другой вызывает операцию копирования содержимого одной из них в другую, а после присвоения переменной типа класса другой приводит к тому, что обе они ссылаются на один объект;

2) Структуру нельзя наследовать от других структур или классов. Все структуры наследуются непосредственно от System.ValueType, который наследуется от System.Object.;

3) Структура не может служить основой для классов;

4) Структуры могут быть созданы без использования нового оператора.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]