VB.NET навсегда
Главная | | Регистрация | Вход
Пятница
17.05.2024
06:03
Приветствую Вас Гость | RSS
Главная » 2009 » Сентябрь » 17 » Структуры
19:31
Структуры
В предыдущих версиях Visual Basic существовала возможность создания определяемых пользователем типов данных {User Defined Data Types, или UDT) с помощью оператора
Туре. Определяемый пользователем тип данных, как показано в листинге 7.12, представляет собой объединение нескольких различных типов в один тип данных.

ТИП Employee в Visual Basic 6.0

Public Type Employee
FirstName as String
LastName as String
SocialSecurityNumber as String
BirthDate as Date
Dependents as Integer
End Type
В VB.NET, как показано в листинге 7.13, оператор Туре заменен оператором Structure.
ЛИСТИНГ 7.13. Структура типа Employee в VB.NET
Public Structure Employee
Public FirstName as String
Public LastName as String
Public SocialSecurityNumber as String
Public BirthDate as Date
Public Dependents as Integer
End Structure


Оператор S t r u c t u r e фактически создает численный тип. В действительности структуры представляют собой тип численного класса. В языке VB.NET структура содержит не только типы данных, но также свойства и методы. все индивидуальные типы данных, за исключением поля SocialSecurityNumber, имеют общие модификаторы доступности. Все элементы
структуры в языке VB.NET должны иметь модификатор доступности. В VB.NET появилась новая возможность, позволяющая ограничивать область доступа для отдельных элементов структуры. В предыдущих версиях Visual Basic подобной возможности для определяемых пользователем типов не существовало. Кроме этого, структуры могут иметь свойства и методы.

На первый взгляд может показаться, что тип S t r u c t u r e практически ничем не отличается от класса. По многим показателям это действительно так, но в то же время имеется ряд существенных отличий.

Пример структуры

Public Structure TEmployee
Public FirstName as String
Public LastName as String
Private SocialSecurityNumber as String
Public BirthDate as Date
Public Dependents as Integer
Readonly Property FullName
Get
Return FirstName & " " & LastName
End Get
End Property

Public Function CalculateExemptionAmount(ByVal _
AmountPerDependent as Decimal) as Decimal
Return AmountPerDependent * Dependents
End Function

End Structure

Структуры размещены в памяти не как объекты, а как численные типы (к численным типам относятся встроенные типы данных, такие как I n t e g e r , Boolean и т.п.). Результатом этого является повышение эффективности их обработки и, как следствие, снижение затрат на "сборку мусора" и подобные операции. Поэтому эффективность структур гораздо выше. Структуры не могут наследоваться из класса или структуры; точно так же другая структура или класс не могут наследоваться из структуры.

Кроме этого, структуры совершенно по-разному относятся к конструкторам и деструкторам. Пример класса, созданного при обращении оператора New к классу, приведен ниже.

Dim oEmployee as New CEmployee

Подобный метод не может использоваться при создании структуры. Это связано с тем, что структура, как и любые другие численные типы, не должна создаваться явно. Ниже приведен пример создания структуры.

Dim tEmployee as TEmployee


После того как структура создана, значения всех ее элементов приводятся к значениям по умолчанию, заданным .NET Framework. (Значения численных типов по умолчанию равны 0, строковых — пустой строке, значения типа Boolean равны False.)

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

При этом структурам не разрешено иметь деструкторы. Как только переменная "выпадет" из области действия структуры или ей будет присвоено нулевое значение, CLR, используемая для поддержания эффективности структур, очистит область памяти, в которой размещена данная структура.

Структуры, подобные классу Туре в Visual Basic 6.0, представляют собой достаточно полезный тип для создания простых структур данных и должны использоваться для тех
же целей. Структуры не должны применяться для представления сложного объекта, а скорее, в качестве фрагмента данных с некоторыми простыми функциями.
Просмотров: 2734 | Добавил: admin | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Меню
Поиск
Наш опрос
Оцените мой сайт
Всего ответов: 8
Copyright MyCorp © 2024
Создать бесплатный сайт с uCoz