Я новичок в vb.net и очень разочарован.Основные вопросы о классах, модулях и взаимодействии
Как и все хорошие программисты, я хочу разбить мой код на отдельные файлы на основе функциональности. Некоторые из моего кода взаимодействуют с пользователями через Forms, а некоторые взаимодействуют с лабораторным оборудованием за кулисами (без прямого взаимодействия с пользователем). Иногда пользователь может изменить что-то, что повлияет на лабораторное оборудование, и иногда что-то произойдет с лабораторным оборудованием, о котором должен знать пользователь. Когда я использую VS для создания файлов, я должен выбрать модуль или форму. VS затем создает пустой файл с с либо
Открытый класс Foo
End Class
или
Модуль Foo
End Module
Если у меня есть куча файлы, каждый модуль, и если я определяю подпрограммы в модуле для Друга, тогда я могу назвать их из других модулей, поэтому:
Модуль Foo
Friend Sub DoSomeWork()
End Sub
End Module
код в Фее может вызывать процедуры в Foo -
Модуль Плата
Friend Sub Stuff()
DoSomeWork()
End SUb
End Module
Когда я создаю Форма, VS cre занял класс. Я нахожу, что я могу вызывать подпрограммы, определенные в модуле из класса, но когда я пытаюсь позвонить из модуля в класс, я получаю сообщение об ошибке, которую не запускает программа, которую я пытаюсь вызвать. Я также не могу звонить из одного класса в другой класс. Объявления, как представляется, применяются только к библиотечным программам вне моей программы.
Я просмотрел несколько онлайн-объяснений и руководств, но, честно говоря, я не понимаю их и не забочусь о «наследовании от базового класса» и всех других gobbledygook, которые содержат такие «объяснения». Я хочу сосредоточиться на создании моего приложения.
Моей Главная форма имеет название «Main»
Я попытался положить весь код модуля в основном класс первый переименования «Module Foo» в «Открытый частичном классе Main» - плохая идея - создает impossible- чтобы найти дублирующуюся ошибку. Я пробовал создавать пустые файлы кода, определяя их как Public Partial Class Main и вставляя в них код модуля, - это сработало в этом коде в Class Main, можно было бы вызвать код модуля (который теперь находился в Main) и наоборот , но другие Формы (конечно, у меня более одного) создаются VS, чтобы иметь свои собственные Классы, и как только код «Module» переносится из модулей в Class Main, другие Forms (Classes) больше не могут вызывать код ,
Я просто хочу рецепт (лучшая практика). Я могу следить за определением модулей и классов, чтобы общий и общий код и данные.
ОТВЕТ снизу
Чтобы вызвать подпрограмму в другом классе вам нужно просто поставить имя класса перед именем подпрограммы.
Так не
DoSomeWork()
но
Foo.DoSOmeWork()
Это может быть очевидным для вас всех опытных программистов, но не ко мне. Вам не нужно добавлять имя класса/модуля к вызову Module-to-Module или вызову Class-to-Module, только для вызовов, которые производятся в классах. Лично, ради последовательности, я думаю, что все должно быть одинаково, но это, вероятно, нарушит какое-то правило OO. В любом случае, спасибо всем.
Говорит, как VB кодер ... –
Я предлагаю вам оставить VB и изучить вариант C (C# .NET с момента ее и то, что вы узнали до сих пор могут быть применены в C#) – Omar