C# C中的类和模块是用于什么的#

C# C中的类和模块是用于什么的#,c#,class,module,C#,Class,Module,有人能解释一下类和模块之间的区别吗。你什么时候用一个来对比另一个?我用的是C# 更新:我的意思是VB模块的C等价物。模块是一个已编译的dll或exe,它包含已编译的类。在大多数其他语言中,类与类是相同的 此外,模块(无论是一个还是多个)是.Net中程序集的组成部分 请记住,一旦它在.Net中编译,不管它是用什么语言编写的,它都是IL,因此您所描述的术语在这一点上几乎是语言不可知的。(也许我应该清楚,C中没有“模块”,就像VB.Net中的“模块”) C#中没有模块(如VB或VB.NET中的模块)。

有人能解释一下类和模块之间的区别吗。你什么时候用一个来对比另一个?我用的是C#


更新:我的意思是VB模块的C等价物。

模块是一个已编译的dll或exe,它包含已编译的类。在大多数其他语言中,类与类是相同的

此外,模块(无论是一个还是多个)是.Net中程序集的组成部分

请记住,一旦它在.Net中编译,不管它是用什么语言编写的,它都是IL,因此您所描述的术语在这一点上几乎是语言不可知的。

(也许我应该清楚,C中没有“模块”,就像VB.Net中的“模块”)

C#中没有模块(如VB或VB.NET中的模块)。因此,模块是编译并打包成程序集的模块,它更符合逻辑

而类是一个定义良好的实体。模块可以使用一个或多个类来运行。(同样,逻辑上使用“模块”一词)


“模块”一词也用于完全不同的上下文中,即System.Reflection。模块是数据和函数(字段、属性和方法)的独立单元

模块是指从单个物理文件生成的代码。大多数情况下,在VisualStudio中编写代码时,单个文件将包含单个类、接口或结构

编译的DLL或EXE称为程序集。程序集可以包含任意数量的模块以及版本信息等其他资源。默认情况下,在Visual Studio中编译程序集时,该程序集包含项目中定义的每个模块

至于何时使用它们:您一直在使用类、接口和结构,这些是基础。模块是你通常无法控制的东西;同样,一般公认的做法是每个文件有一种类型,每个模块编译成一种类型

当您希望跨多个项目重用某些类型(包含在某些模块中)时,通常会使用单独的程序集。您还可以使用它在应用程序的不同组件之间创建硬边界,即将数据库逻辑放在一个程序集中,将业务逻辑放在另一个程序集中。

.NET Framework模块与Visual Basic中的模块不同,程序员用来组织应用程序中的函数和子例程(请参见)

如果您习惯于VB6模块(无需实例即可访问的方法),请在c#

中将函数声明为静态,在c#中没有与VB6模块等效的函数。最接近的可能是一个静态类,但即使如此,该类的成员也不是全局的,因为它们位于VB6模块中。

这在很大程度上取决于您所指的“模块”

visualbasic模块 对于VB.Net模块,在C#中没有真正的等价物。在某些方面,它类似于静态类,因为您无法创建它的实例,并且其中的所有成员都是静态的。在C#中,这需要一个显式的静态关键字,而在VB.Net中它是隐式的

但最大的区别在于名称查找。在VB.Net中,如果模块在范围内,则可以无条件地调用其任何方法。对于C#静态类,情况并非如此

除了名称查找之外,类和模块之间的主要区别在于,类通常仅对该类型的实例有用

系统反射模块 此上下文中的模块是可移植的可执行文件(dll或exe)。如果是多文件程序集,则给定的DLL/EXE可以由多个模块组成。它与单个类没有真正的关系

来自

模块是可移植的可执行文件,如type.dll或application.exe,由一个或多个类和接口组成。单个模块中可能包含多个名称空间,并且一个名称空间可能跨越多个模块

作为一个单元部署的一个或多个模块组成一个程序集。有关创建具有多个模块的部件的信息,请参见

请注意,.NET Framework模块与Visual Basic中的模块不同,程序员使用它来组织应用程序中的函数和子例程


有模块:)
typeof(string)。例如,模块
你可以通过反射看到它们是如何排列的:也许你的意思是没有VB 6的等价物?@Nick这正是我的意思,看到他的问题,我以为他在试图找到VB.net的“模块”的等价物,这与System.Reflection.Module非常不同…免费少做十次…:)不确定是谁投了你的反对票,但这是-2而不是-10:)也许作者会澄清他们的意思,因为人们认为“模块”的含义受到他们背景的严重影响+从我看来,你的正确答案完全正确。你回答了我的问题。谢谢Vivek。我试图找到C#等价物。Thanks@Arlen贝勒,很高兴知道:)正如答案所示,“模块”一词有多种含义。如果您需要更多信息,请随意添加您的意思,只是为了指出VB.NET也有模块作为VB6模块。@Romias:我知道。我说的是C。