Есть только три способа организовать VB.NET заявление.
- Модули
- сооружения
- Классы
Но большинство технических статей предполагают, что вы уже знаете о них все. Если вы один из многих, у кого все еще есть несколько вопросов, вы можете просто прочесть запутанные кусочки и все равно попытаться разобраться. И если у вас есть много времени, вы можете начать поиск через от Microsoft документация:
- «Модуль - это переносимый исполняемый файл, такой как type.dll или application.exe, состоящий из одного или нескольких классов и интерфейсов».
- «Оператор класса определяет новый тип данных».
- «Оператор Structure определяет тип составного значения, который вы можете настроить».
Прямо тогда. Любые вопросы?
Чтобы быть немного более справедливым по отношению к Microsoft, у них есть страницы и страницы (и больше страниц) информации обо всем этом, через которую вы можете пробираться. И они должны быть максимально точными, потому что они устанавливают стандарты. Другими словами, документация Microsoft иногда читается как книга законов, потому что она является книга законов.
Но если вы только изучаете .NET, это может быть очень запутанным! Вы должны начать где-нибудь. Понимание трех основных способов написания кода в VB.NET - это хорошее начало.
Ты можешь написать VB.NET код с использованием любой из этих трех форм. Другими словами, вы можете создать Консольное приложение в VB.NET Express и напишите:
Модуль Модуль1
Sub Main ()
MsgBox («Это модуль!»)
End Sub
Конечный модуль
Класс Class1
Sub Main ()
MsgBox («Это класс»)
End Sub
Конечный класс
Структура Struct1
Dim myString As String
Sub Main ()
MsgBox («Это структура»)
End Sub
Конечная структура
Это не делает Любые смысл как программа, конечно. Дело в том, что вы не получите синтаксическую ошибку, так что это "законно" Код VB.NET.
Эти три формы - единственный способ закодировать корень пчелы всех .NET: объект. Единственный элемент, который нарушает симметрию трех форм - это утверждение: Dim myString As String. Это связано со структурой, являющейся «составным типом данных», как заявляет Microsoft в своем определении.
Следует также отметить, что все три блока имеют Sub Main () в них. Один из самых фундаментальных принципов ООП обычно называется инкапсуляция. Это эффект «черного ящика». Другими словами, вы должны иметь возможность обрабатывать каждый объект независимо, включая использование подпрограмм с одинаковыми именами, если хотите.
Классы
Классы - это «правильное» место для начала, потому что, как Microsoft отмечает: «Класс является фундаментальным строительным блоком объектно-ориентированного программирования (ООП)». Фактически, некоторые авторы рассматривают модули и структуры как просто особые виды классов. Класс более объектно-ориентирован, чем модуль, потому что возможно Instantiate (сделать копию) класс, но не модуль.
Другими словами, вы можете кодировать ...
Открытый класс Form1
Частный Sub Form1_Load (_
ByVal отправитель как система. Объект, _
ByVal e As System. EventArgs) _
Ручки MyBase. нагрузка
Dim myNewClass As Class1 = Новый Class1
myNewClass. ClassSub ()
End Sub
Конечный класс
(Подчеркивание класса подчеркивается.)
Неважно, является ли сам фактический класс, в этом случае, ...
Публичный класс Class1
Sub ClassSub ()
MsgBox («Это класс»)
End Sub
Конечный класс
... находится в отдельном файле или является частью того же файла с Form1 код. Программа работает точно так же. (Заметить, что Form1 это тоже класс.)
Вы также можете написать код класса, который ведет себя очень похоже на модуль, то есть без его создания. Это называется Общий учебный класс. В статье «Статические» (то есть «Общие») в сравнении с Динамическими типами в VB.NET это объясняется гораздо подробнее.
Следует также учитывать еще один факт о занятиях. члены (свойства и методы) класса существуют только тогда, когда существует экземпляр класса. Название для этого обзорное. Это сфера экземпляра класса ограничено. Код выше можно изменить, чтобы проиллюстрировать этот момент следующим образом:
Открытый класс Form1
Частный Sub Form1_Load (_
ByVal отправитель как система. Объект, _
ByVal e As System. EventArgs) _
Ручки MyBase. нагрузка
Dim myNewClass As Class1 = Новый Class1
myNewClass. ClassSub ()
myNewClass = ничего
myNewClass. ClassSub ()
End Sub
Конечный класс
Когда второй myNewClass. ClassSub () заявление выполнено, NullReferenceException ошибка выдается, потому что ClassSub член не существует
Модули
В VB 6 часто встречались программы, в которых большая часть кода была в модуле (A .BASфайл, а не, например, в форма файл, такой как Form1.frm.) В VB.NET модули и классы находятся в .vb файлы. Основная причина, по которой модули включены в VB.NET, заключается в том, чтобы дать программистам возможность организовать свои системы, размещая код в разных местах, чтобы точно настроить область действия и доступ для них. код. (То есть, как долго существуют члены модуля и какой другой код может ссылаться и использовать члены.) Иногда вам может понадобиться поместить код в отдельные модули, чтобы было легче работать с ним.
Все модули VB.NET Общий потому что они не могут быть созданы (см. выше), и они могут быть отмечены друг или общественного поэтому к ним можно получить доступ либо в пределах одной сборки, либо когда на них есть ссылки.
сооружения
Структуры являются наименее понятными из трех форм объектов. Если бы мы говорили о «животных» вместо «объектов», структура была бы трубкозуб.
Большая разница между структурой и классом состоит в том, что структура - это тип ценности и класс тип ссылки.
Что это обозначает? Я так рад, что ты спросил.
Тип значения - это объект, который хранится непосредственно в памяти. целое число хороший пример типа значения Если вы объявили целое число в вашей программе, как это ...
Dim myInt as Integer = 10
... и вы проверили расположение памяти, хранящейся в Минт, вы найдете значение 10. Вы также видите, что это описывается как «размещение в стеке».
Стек и куча - это просто разные способы управления использованием компьютерной памяти.
Ссылочный тип - это объект, в котором местоположение объекта хранится в памяти. Таким образом, поиск значения для ссылочного типа всегда выполняется в два этапа. строка хороший пример ссылочного типа Если вы объявили строка как это ...
Dim myString as String = "Это myString"
... и вы проверили расположение памяти, хранящейся в MyString, вы найдете другую область памяти (называется указатель - этот способ работы - самое сердце языков C-стиля). Вы должны пойти в это место, чтобы найти значение «Это myString». Это часто называют "распределением в куче". Стек и куча
Некоторые авторы говорят, что типы значений не являются даже объектами, и объектами могут быть только ссылочные типы. Это, безусловно, правда, что сложные характеристики объекта, такие как наследование и инкапсуляция возможны только с ссылочными типами. Но мы начали всю эту статью с того, что для объектов было три формы, поэтому я должен признать, что структуры - это какой-то объект, даже если это нестандартные объекты.
Происхождение структур программирования восходит к файлово-ориентированным языкам, таким как Cobol. На этих языках данные обычно обрабатывались как последовательные плоские файлы. «Поля» в записи из файла были описаны разделом «определение данных» (иногда называемым «макетом записи» или «тетрадью»). Итак, если запись из файла содержала:
1234567890ABCDEF9876
Единственный способ узнать, что «1234567890» - это номер телефона, «ABCDEF» - это идентификатор, а 9876 - 98,76 долл. США - через определение данных. Структуры помогут вам достичь этого в VB.NET.
Структура Структура1
Конечная структура
Потому что строка является ссылочным типом, необходимо сохранить длину с VBFixedString атрибут для записей фиксированной длины. Вы можете найти расширенное объяснение этого атрибута и атрибутов в целом в статье Атрибуты в VB .NET.
Хотя структуры являются нестандартными объектами, у них есть много возможностей в VB.NET. Вы можете кодировать методы, свойства и даже события и обработчики событий в структурах, но вы также можете использовать более упрощенный код и, поскольку они являются типами значений, обработка может быть быстрее. Например, вы можете перекодировать приведенную выше структуру следующим образом:
Структура Структура1
Sub mySub ()
MsgBox («Это значение myPhone:» & myPhone)
End Sub
Конечная структура
И используйте это так:
Dim myStruct As Structure1
myStruct.myPhone = "7894560123"
myStruct.mySub ()
Это стоит вашего времени, чтобы немного поиграться со структурами и узнать, что они могут сделать. Это один из странных уголков VB.NET, который может стать волшебной пулей, когда вам это нужно.