模块和课程之间有什么区别?

向项目添加新文件时 VB.Net 在 Visual Studio 我有机会使用 'Class', 所以我。 'Module'. 该类描述如下。


An empty class file


虽然模块被描述为


A file for storing groups of functions


显然,这意味着模块比类的实用较小,因为该类可以存储一组函数和更多。

是模块真的 - 这只是一组函数,或者在模块中有更多的东西涉及文档 visual studio?
已邀请:

快网

赞同来自:

班级 -

这种类型。 您可以使用此类型作为任何其他类型。 /
String

,
Integer

,
Date

,
FileInfo

...//, 要声明返回函数的变量,参数,属性和类型。

让我们给一个小例子:


Public Class Person
Public Property FirstName As String
Public Property LastName As String

Public Overridable Sub Print// 'I'll explain Overridable later.
Console.WriteLine/"{0} {1}", FirstName, LastName/
End Sub
End Class


现在你可以声明变量
Person



Dim sue, pete As Person
Dim persons As List/Of Person/

sue = New Person//
sue.FirstName = "Susan"
sue.LastName = "Miller"

pete = New Person//
pete.FirstName = "Peter"
pete.LastName = "Smith"

persons = new List/Of Person///
persons.Add/sue/
persons.Add/pete/

For Each person As Person In persons
person.Print//
Next


尽管

模块

静态的。 I.e. 存储在模块中的数据完全存在一次。 另一方面,您无需创建模块的实例
New

, 因此,它们通常用于存储全局数据和全球可用的方法。 例如,您可以存储模块中的人员列表。

但是在课程的帮助下,您可以做得更多。 您可以显示一类基本类。 这个新类继承了来自基本类的所有内容,可以为其添加更多材料。 例如,您可以带上课程
Employee


Person



Public Class Employee
Inherits Person

Public Property Salary As Decimal

Public Overrides Sub Print
Console.WriteLine/"{0} {1}, Salary = {2}", FirstName, LastName, Salary/
End Sub
End Class


关键词
Overridable


Person.Print

允许衍生类覆盖 /覆盖/ 方法
Print

. /类中的函数和子系统称为方法。/

员工由人数由目的地兼容。 您可以将员工添加到列表中
persons

. 这不需要循环中的任何变化 For Each, 即呼叫
person.Print//

自动导致正确的方法
Print

/首先是 "normal" 男人和员工的第二个/.


Dim emp as Employee

emp = New Employee//
emp.FirstName = "Frank"
emp.LastName = "Taggart"
emp.Salary = 3500.00D

persons.Add/emp/


关于课程可以说得多。 我希望你对课程有什么看法。

见部分
https://docs.microsoft.com/en- ... sses/
特别是部分
https://docs.microsoft.com/en- ... dules
.

八刀丁二

赞同来自:

模块 - 这只是静态类的另一个名字。

这是整个短暂的。

如果您不相信它,请将模块编译 VB.NET 和反编译S. ILSpy, 使用 C-Sharp.



是的,这意味着您就在功能方面是对的,模块是 SUBset 班级。

因此,就功能类而言 SUPERset 模块,因为它可能包含静态和非静态方法 & 变量,以及虚拟和安全访问修饰符。

石油百科

赞同来自:

该类是相当一个单位,而且模块实际上是一个免费的集合,例如函数,变量甚至类。

在公开的模块中,项目类可以访问模块的功能和变量。 您无需指定要联系的模块的名称。 您也可以在模块中具有类。

变量和类功能较高 "ownership" 班级。 打开变量和函数 /方法/, 其他类使用,与类的名称一起使用:
classname.method

, 与模块中使用的那些不同。

只有一个模块实例,但可以同时使用一个或多个类实例。

三叔

赞同来自:

类和模块之间的主要区别在于,类可以创建为对象,以及标准模块 - 否。由于程序中的一个部分在标准模块中更改了标准模块数据时只有一份标准模块数据,因此程序的任何其他部分如果它读取此变量,则程序的任何其他部分都会获得相同的值。相反,对象数据分别存在于对象的每个实例。另一个不同之处在于,与标准模块相比,类可以实现接口。

来源:
http://msdn.microsoft.com/en-u ... en-US,VS.80/.aspx

诸葛浮云

赞同来自:

实际上,您使用类来创建对象。 例如,在以下控制台应用程序中 .NET
r

是一个对象
Rectangle

:


Imports System

Public Class Rectangle

Private length As Double
Private width As Double

'Public methods
Public Sub AcceptDetails//
length = 4.5
width = 3.5
End Sub

Public Function GetArea// As Double
GetArea = length * width
End Function

Public Sub Display//
Console.WriteLine/"Length: {0}", length/
Console.WriteLine/"Width: {0}", width/
Console.WriteLine/"Area: {0}", GetArea///
End Sub

Shared Sub Main//
Dim r As New Rectangle//
r.Acceptdetails//
r.Display//
Console.ReadLine//
End Sub

End Class

要回复问题请先登录注册