Что такое классы и модули для в C#

Может кто-то объяснять различие между классом и модулем. Когда Вы используете один по сравнению с другим? Я использую C#.

Обновление: Я действительно имею в виду эквивалент C# Модуля VB.

20
задан Arlen Beiler 30 January 2010 в 17:21
поделиться

6 ответов

(Может быть, я должен пояснить, что на C# нет "Модулей", как в VB.NET "Модуль")

На C# нет модулей (как в VB или VB.NET). Таким образом, вместо модуля, который скомпилирован и упакован в сборку, это более логично.

Тогда как класс - это хорошо описанная сущность. Модуль может использовать для своей работы класс (или классы). (И снова слово "модуль" используется логически)

Слово "Module" также используется в совершенно ином контексте, в System.Reflection.Module

.
6
ответ дан 29 November 2019 в 23:52
поделиться

Класс - независимая единица данных и функции - поля, свойства и методы.

Модуль относится к коду, созданному из одного физического файла. Большую часть времени, когда вы пишете код в Visual Studio, один файл будет содержать один класс, интерфейс или структуру.

Компилированные DLL или EXES называются сборки . Сборка может содержать любое количество модулей, а также другие ресурсы, такие как информация о версии. По умолчанию, когда вы компилируете сборку в Visual Studio, сборка содержит каждый модуль, определенный в проекте.

Что касается их использования: вы используете классы, интерфейсы и структуры все время, это основы. Модули - это то, что у вас обычно нет большого контроля; Опять же, это общепринятая практика, чтобы иметь один тип на один файл, который компилирует одному типу на модуль.

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

4
ответ дан 29 November 2019 в 23:52
поделиться

Это сильно зависит от того, какой «модуль» вы ссылаетесь.

Модуль Visual Basic

Нет реального эквивалента в C # для модуля VB.Net. По способам, это похоже на статический класс, в том, что вы не можете создать экземпляр этого, и все участники внутри него являются статическими. В C # это требует явного ключевого слова статического статика во vb.net это неявно.

Большая разница, хотя в поисках имени. В VB.NET Если модуль имеет прицел, то любой из него методов можно вызвать без квалификации. Это не соответствует статическим классам C #

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

System.reflection.Module

Модуль в этом контексте является портативный исполняемый файл (DLL или EXE). Данная DLL / EXE может состоять из нескольких модулей, если это многофункциональная сборка. Это не имеет реальных отношений с отдельным классом.

18
ответ дан 29 November 2019 в 23:52
поделиться

Модуль - это скомпилированная dll или exe, он содержит скомпилированные классы. Класс такой же, как и в большинстве других языков.

Также, модули, независимо от того, один это или несколько, составляют сборки в .Net

Помните, что как только он скомпилирован в .Net, не имеет значения, на каком языке он был скомпилирован, это все IL, так что термины, которые вы описываете, на тот момент являются в значительной степени языковыми агностическими.

7
ответ дан 29 November 2019 в 23:52
поделиться

В 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 модуле.

3
ответ дан 29 November 2019 в 23:52
поделиться

.NET Framework module - это не то же самое, что -модуль в Visual Basic, который используется программистами для организации функций и подпрограмм в приложении ( см. -класс модуля на C#)
. Если Вы привыкли к модулю VB6 (метод, доступный без экземпляра), объявите функции как static in c#

.
2
ответ дан 29 November 2019 в 23:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: