0 просмотров

Модули, структуры и классы

Деловая женщина печатает на клавиатуре компьютера

Дэн Маббатт — эксперт по Visual Basic, создавший обучающие курсы для пользователей Visual Basic. Он является соавтором двух книг на эту тему.

Есть всего три способа организовать приложение VB.NET.

  • Модули
  • Структуры
  • Классы

Но в большинстве технических статей предполагается, что вы уже знаете о них все. Если вы один из многих, у кого все еще есть несколько вопросов, вы можете просто прочитать запутанные фрагменты и попытаться в любом случае разобраться. И если у вас есть много времени, вы можете начать поиск в документации Microsoft:

  • «Модуль — это переносимый исполняемый файл, например type.dll или application.exe, состоящий из одного или нескольких классов и интерфейсов».
  • «Утверждение класса определяет новый тип данных».
  • «Инструкция Structure определяет составной тип значения, который вы можете настроить».

Прямо тогда. Любые вопросы?

Чтобы быть немного более справедливым по отношению к Microsoft, у них есть страницы и страницы (и больше страниц) с информацией обо всем этом, которую вы можете просмотреть. И они должны быть максимально точными, потому что они устанавливают стандарт. Другими словами, документация Microsoft иногда читается как юридическая книга, потому что она является книга законов.

Но если вы только изучаете .NET, это может сильно запутать! Вы должны с чего-то начать. Понимание трех основных способов написания кода на VB.NET — хорошее место для начала.

Вы можете писать код VB.NET, используя любую из этих трех форм. Другими словами, вы можете создать Консольное приложение в VB.NET Express и напишите:

Модуль Модуль1
Подоснова()
MsgBox("Это модуль!")
Конец сабвуфера
Конечный модуль
Класс Класс1
Подоснова()
MsgBox("Это класс")
Конец сабвуфера
Конец класса
Структура Структура1
Dim myString как строку
Подоснова()
MsgBox("Это структура")
Конец сабвуфера
Конечная структура

это не делает Любые смысла как программы, конечно.Дело в том, что вы не получаете синтаксическую ошибку, поэтому это «законный» код VB.NET.

Эти три формы — единственный способ закодировать корень пчелиной матки всего .NET: объект. Единственным элементом, нарушающим симметрию трех форм, является утверждение: Dim myString как строку. Это связано с тем, что структура является «составным типом данных», как заявляет Microsoft в своем определении.

Еще одна вещь, на которую следует обратить внимание, это то, что все три блока имеют Подоснова() в них. Один из самых фундаментальных принципов ООП обычно называют инкапсуляция. Это эффект «черного ящика». Другими словами, вы должны иметь возможность обрабатывать каждый объект независимо, включая использование подпрограмм с одинаковыми именами, если хотите.

Классы

Классы — это «правильное» место для начала, потому что, как отмечает Microsoft, «класс — это фундаментальный строительный блок объектно-ориентированного программирования (ООП)». На самом деле некоторые авторы рассматривают модули и структуры просто как специальные виды классов. Класс более объектно-ориентирован, чем модуль, потому что можно создавать экземпляр (сделать копию) класса, но не модуля.

Другими словами, вы можете кодировать .

Форма публичного класса1
Частная подпрограмма Form1_Load( _
Отправитель ByVal Как System.Object, _
ByVal e As System.EventArgs) _
Обрабатывает MyBase.Load
Dim myNewClass As Class1 = New Class1
мойНовыйКласс.ClassSub()
Конец сабвуфера
Конец класса

(Экземпляр класса выделен.)

В данном случае не имеет значения, является ли сам фактический класс .

Открытый класс Class1
ПодклассSub()
MsgBox("Это класс")
Конец сабвуфера
Конец класса

. находится в отдельном файле или является частью того же файла с Форма1 код. Программа работает точно так же. (Заметь Форма1 тоже класс))

Вы также можете написать код класса, который ведет себя так же, как модуль, то есть без его создания. Это называется Общий учебный класс. В статье «Статические» (то есть «Общие») по сравнению с динамическими типами в VB.NET это объясняется гораздо более подробно.

Еще один факт о классах также следует иметь в виду. Члены (свойства и методы) класса существуют только тогда, когда существует экземпляр класса. Имя для этого определение объема. Это сфера экземпляра класса ограничено. Приведенный выше код можно изменить, чтобы проиллюстрировать этот момент следующим образом:

Форма публичного класса1
Частная подпрограмма Form1_Load( _
Отправитель ByVal Как System.Object, _
ByVal e As System.EventArgs) _
Обрабатывает MyBase.Load
Dim myNewClass As Class1 = New Class1
мойНовыйКласс.ClassSub()
мойНовыйКласс = Ничего
мойНовыйКласс.ClassSub()
Конец сабвуфера
Конец класса

Когда второй мойНовыйКласс.ClassSub() выполняется оператор, NullReferenceException вылетает ошибка, потому что ClassSub член не существует.

Модули

В VB 6 часто можно было увидеть программы, в которых большая часть кода находилась в модуле (A .БАС, файл, а не, например, в Форма файл, такой как Форма1.frm.) В VB.NET и модули, и классы находятся в .ВБ файлы. Основная причина, по которой модули включены в VB.NET, заключается в том, чтобы дать программистам возможность организовать свои системы, размещая код в разных местах, чтобы точно настроить область действия и доступ для своего кода. (То есть, как долго существуют члены модуля и какой другой код может ссылаться на эти члены и использовать их.) Иногда вам может понадобиться поместить код в отдельные модули, чтобы упростить работу с ним.

Все модули VB.NET Общий потому что они не могут быть созданы (см. выше) и их можно пометить Друг или же Общественный поэтому к ним можно получить доступ либо в пределах одной сборки, либо всякий раз, когда на них ссылаются.

Структуры

Структуры наименее понятны из трех форм объектов. Если бы мы говорили о «животных» вместо «объектов», структура была бы трубкозубом.

Большая разница между структурой и классом заключается в том, что структура — это тип значения а класс это тип ссылки.

Что это значит? Я так рада, что ты спросил.

Тип значения — это объект, который хранится непосредственно в памяти. Ан Целое число является хорошим примером типа значения.Если вы объявили Целое число в вашей программе, как это.

Dim myInt как целое число = 10

. и вы проверили ячейку памяти, хранящуюся в мойИнт, вы найдете значение 10. Вы также видите, что это описывается как «выделение в стеке».

Стек и куча — это просто разные способы управления использованием компьютерной памяти.

Ссылочный тип — это объект, в котором местоположение объекта хранится в памяти. Таким образом, поиск значения для ссылочного типа всегда выполняется в два этапа. А Нить является хорошим примером ссылочного типа. Если вы объявили Нить как это .

Dim myString as String = «Это моя строка»

. и вы проверили ячейку памяти, хранящуюся в моя строка, вы найдете другую ячейку памяти (называемую указатель — этот способ ведения дел является сердцем языков стиля C). Вам нужно будет перейти в это место, чтобы найти значение «Это моя строка». Это часто называют «распределением в куче». Стек и куча

Некоторые авторы говорят, что типы значений даже не являются объектами, а объектами могут быть только ссылочные типы. Конечно, сложные характеристики объекта, такие как наследование и инкапсуляция, возможны только со ссылочными типами. Но мы начали всю эту статью с того, что у объектов было три формы, поэтому я должен признать, что структуры — это своего рода объекты, даже если они нестандартные объекты.

Истоки программирования структур восходят к файлово-ориентированным языкам, таким как Cobol. В этих языках данные обычно обрабатывались как последовательные плоские файлы. «Поля» в записи из файла описывались в разделе «определение данных» (иногда называемом «схемой записи» или «тетради»). Итак, если запись из файла содержала:

1234567890ABCDEF9876

Единственный способ узнать, что «1234567890» — это номер телефона, «ABCDEF» — это идентификатор, а 9876 — это 98,76 долларов США, — это определение данных. Структуры помогают вам сделать это в VB.NET.

Структура Структура1
Затемнить мой телефон как строку
Dim myID как строку
Dim myAmount As String
Конечная структура

Потому что Нить является ссылочным типом, необходимо, чтобы длина оставалась одинаковой с VBFixedString атрибут для записей фиксированной длины. Вы можете найти расширенное объяснение этого атрибута и атрибутов в целом в статье Атрибуты в VB .NET.

Хотя структуры являются нестандартными объектами, в VB.NET у них есть много возможностей. Вы можете кодировать методы, свойства и даже события и обработчики событий в структурах, но вы также можете использовать более упрощенный код, и поскольку они являются типами значений, обработка может быть быстрее. Например, вы можете перекодировать приведенную выше структуру следующим образом:

Структура Структура1
Затемнить мой телефон как строку
Dim myID как строку
Dim myAmount As String
Sub mySub()
MsgBox("Это значение myPhone: " & myPhone)
Конец сабвуфера
Конечная структура

И используйте это так:

Dim myStruct As Structure1
myStruct.myPhone = "7894560123"
myStruct.mySub()

Стоит потратить немного времени, чтобы поиграть со структурами и узнать, что они могут делать. Это один из странных уголков VB.NET, который может стать волшебным средством, когда вам это нужно.

голоса
Рейтинг статьи
Статья в тему:  Карл Великий и битва при перевале Ронсево
Ссылка на основную публикацию
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
Adblock
detector