什么是C#中的类和模块

时间:2010-01-30 16:11:25

标签: c# class module

有人可以解释一个类和一个模块之间的区别。你什么时候使用一个?我正在使用C#。

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

7 个答案:

答案 0 :(得分:15)

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

Visual Basic的模块

对于VB.Net模块,C#中没有真正的等价物。在某种程度上,它类似于静态类,因为你无法创建它的实例,并且它内部的所有成员都是静态的。在C#中,这需要一个显式的静态关键字,而在VB.Net中它是隐含的。

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

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

System.Reflection.Module

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

答案 1 :(得分:6)

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

此外,模块,无论是一个还是多个,都构成.Net

中的程序集

请记住,一旦它在.Net中编译,它编写的语言并不重要,它就是IL,所以你所描述的术语在那时几乎与语言无关。

答案 2 :(得分:6)

(也许我应该清楚,C#中没有“模块”,就像在VB.NET的“模块”中那样)

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

而类是明确定义的实体。模块可以使用一个或多个类来运行。 (逻辑上也使用“模块”一词)

单词“Module”也在一个完全不同的上下文中使用,在System.Reflection.Module中

答案 3 :(得分:4)

是数据和函数的独立单元 - 字段,属性和方法。

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

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

至于何时使用它们:您始终使用类,接口和结构,这些是基础知识。模块是你通常无法控制的东西;再一次,每个文件有一种类型,每个模块编译成一种类型,这是一种普遍接受的做法。

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

答案 4 :(得分:2)

.NET Framework模块 与Visual Basic中的 模块 不同,后者由程序员在应用程序中组织函数和子例程(参见module class in C#
如果您已经习惯了VB6模块(可以在没有实例的情况下访问的方法),请在c#中将函数声明为 static

答案 5 :(得分:2)

在C#中没有VB6模块的等价物。最接近的是静态类,但即使这样,类的成员也不是全局的,因为它们将在VB6模块中。

答案 6 :(得分:0)

Microsoft docs

  

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

     

作为一个单元部署的一个或多个模块组成一个程序集。有关使用多个模块创建装配的信息,请参见Multifile Assemblies

     

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