Может кто-то объяснять различие между классом и модулем. Когда Вы используете один по сравнению с другим? Я использую C#.
Обновление: Я действительно имею в виду эквивалент C# Модуля VB.
(Может быть, я должен пояснить, что на C# нет "Модулей", как в VB.NET "Модуль")
На C# нет модулей (как в VB или VB.NET). Таким образом, вместо модуля, который скомпилирован и упакован в сборку, это более логично.
Тогда как класс - это хорошо описанная сущность. Модуль может использовать для своей работы класс (или классы). (И снова слово "модуль" используется логически)
Слово "Module" также используется в совершенно ином контексте, в System.Reflection.Module
.Класс - независимая единица данных и функции - поля, свойства и методы.
Модуль относится к коду, созданному из одного физического файла. Большую часть времени, когда вы пишете код в Visual Studio, один файл будет содержать один класс, интерфейс или структуру.
Компилированные DLL или EXES называются сборки . Сборка может содержать любое количество модулей, а также другие ресурсы, такие как информация о версии. По умолчанию, когда вы компилируете сборку в Visual Studio, сборка содержит каждый модуль, определенный в проекте.
Что касается их использования: вы используете классы, интерфейсы и структуры все время, это основы. Модули - это то, что у вас обычно нет большого контроля; Опять же, это общепринятая практика, чтобы иметь один тип на один файл, который компилирует одному типу на модуль.
Вы обычно используете отдельную сборку, когда вы хотите использовать определенные типы (содержащиеся в определенных модулях) в нескольких проектах. Вы также можете использовать его для создания жесткой границы между различными компонентами приложения, то есть логика базы данных в одной сборке и вашу бизнес-логику в другой.
Это сильно зависит от того, какой «модуль» вы ссылаетесь.
Нет реального эквивалента в C # для модуля VB.Net. По способам, это похоже на статический класс, в том, что вы не можете создать экземпляр этого, и все участники внутри него являются статическими. В C # это требует явного ключевого слова статического статика во vb.net это неявно.
Большая разница, хотя в поисках имени. В VB.NET Если модуль имеет прицел, то любой из него методов можно вызвать без квалификации. Это не соответствует статическим классам C #
Помимо поиска имени, первичная разница между классом и модулем заключается в том, что класс обычно полезен только с экземпляром типа.
Модуль в этом контексте является портативный исполняемый файл (DLL или EXE). Данная DLL / EXE может состоять из нескольких модулей, если это многофункциональная сборка. Это не имеет реальных отношений с отдельным классом.
Модуль - это скомпилированная dll или exe, он содержит скомпилированные классы. Класс такой же, как и в большинстве других языков.
Также, модули, независимо от того, один это или несколько, составляют сборки в .Net
Помните, что как только он скомпилирован в .Net, не имеет значения, на каком языке он был скомпилирован, это все IL, так что термины, которые вы описываете, на тот момент являются в значительной степени языковыми агностическими.
В WPF это редкий случай, когда вам потребуется переопределить OnRender
, особенно если все, что вы хотели сделать, это нарисовать BMP на фоне:
<Canvas>
<Canvas.Background>
<ImageBrush ImageSource="Resources\background.bmp" />
</Canvas.Background>
<!-- ... -->
</Canvas>
-121--3242453- Что вы, вероятно, увидите, это ваше определение формы как ресурса (например, двоичное представление файлов DFM вашего проекта)
Если вы не хотите показывать эти формы (для экрана серийной информации и т.д.), создайте эти формы «в коде». Например, создайте TForm, поместите на него TButton и TEdit, присоедините обработчики событий в коде.
Чтобы сделать это вручную: начните с формы и создайте DFM. При просмотре формы выберите в контекстном меню Показать как текст, и вы будете знать, что следует скопировать в код. И убедитесь, что НЕ помещайте какие-либо variablerefernces под de published (всегда ставьте public/protected/private в качестве первой строки в определении вашего класса.
-121--2459748-В C # нет эквивалента модулю VB6. Ближайшим был бы статический класс, но даже тогда члены класса не являются глобальными, так как они находились бы в VB6 модуле.
.NET Framework module - это не то же самое, что -модуль в Visual Basic, который используется программистами для организации функций и подпрограмм в приложении ( см. -класс модуля на C#)
.
Если Вы привыкли к модулю VB6 (метод, доступный без экземпляра), объявите функции как static in c#