模块、结构和类

只有三种方法可以组织VB.NET应用程序。...

只有三种方法可以组织VB.NET应用程序。

Businesswoman typing on computer keyboard
  • 模块
  • 结构
  • 班级

但是大多数技术文章都假设您已经了解了它们的所有内容。如果你是众多仍有一些问题的人之一,你可以把那些令人困惑的部分看完,然后试着找出答案。如果您有很多时间,可以开始搜索Microsoft的文档:

  • 模块是可移植的可执行文件,如type.dll或application.exe,由一个或多个类和接口组成
  • “Class语句定义了新的数据类型。”
  • “Structure语句定义了可以自定义的复合值类型。”

那好吧。有问题吗?

对微软来说更公平一点,他们有一页又一页(还有更多页)关于所有这些的信息,你可以涉猎其中。它们必须尽可能精确,因为它们设定了标准。换句话说,微软的文档有时读起来像一本法律书,因为它是一本法律书。

但是,如果你只是在学习.NET,它可能会非常混乱!你必须从某个地方开始。了解在VB.NET中编写代码的三种基本方法是一个很好的起点。

您可以使用这三种形式中的任何一种编写VB.NET代码。换句话说,您可以在VB.NET Express中创建控制台应用程序并编写:

模块Module1Sub Main()MsgBox(“这是一个模块!”)结束子端模块Class ClassSub Main()MsgBox(“这是一个类”)结束子端类结构StringSub Main()MsgBox(“这是一个结构”)结束子端结构

当然,作为一个程序,这毫无意义。关键是你没有得到语法错误,所以它是“合法的”VB.NET代码。

这三种形式是对所有.NET的queen bee根进行编码的唯一方法:对象。唯一中断三种形式对称性的元素是语句:Dim myString As String。这与Microsoft在其定义中所述的“复合数据类型”结构有关。

另一件需要注意的事情是,所有三个块中都有一个子Main()。OOP最基本的原则之一通常称为封装。这就是“黑匣子”效应。换句话说,您应该能够独立地处理每个对象,如果您愿意,还包括使用同名的子例程。

班级

类是“正确”的起点,因为正如Microsoft所指出的,“类是面向对象编程(OOP)的基本构建块。”事实上,一些作者将模块和结构视为特殊类型的类。类比模块更面向对象,因为可以实例化(复制)类而不是模块。

换句话说,您可以编写。。。

公共类Form1Private Sub Form1_Load(_ByValSender作为System.Object,_ByValE作为System.EventArgs)_处理MyBase.LoadDim myNewClass作为Class1=New ClassMyNewClass.ClassSub()End SubEnd SubEnd类

(强调类实例化。)

在本例中,实际类本身是否。。。

公共类ClassSub ClassSub()MsgBox(“这是一个类”)结束子类

... 单独存在于文件中,或者是具有Form1代码的同一文件的一部分。程序的运行方式完全相同。(请注意,Form1也是一个类。)

您还可以编写类似于模块的类代码,也就是说,无需对其进行实例化。这称为共享类。VB.NET中的“静态”(即“共享”)与“动态类型”一文对此进行了更详细的解释。

关于课程的另一个事实也应该记住。仅当类的实例存在时,类的成员(属性和方法)才存在。其名称是作用域。也就是说,类实例的范围是有限的。上述代码可以通过以下方式进行更改以说明这一点:

公共类Form1Private Sub Form1_Load(_byvalsender作为System.Object,_byvale作为System.EventArgs)_处理MyBase.LoadDim myNewClass,作为Class1=newclassmynewclass.ClassSub()myNewClass=nothing myNewClass.ClassSub()End SubEnd类

当执行第二条myNewClass.ClassSub()语句时,会抛出NullReferenceException错误,因为ClassSub成员不存在。

模块

在VB6中,通常会看到程序的大部分代码都在模块中(例如,在.BAS文件中,而不是在Form1.frm等表单文件中)。在VB.NET中,模块和类都在.VB文件中。VB.NET中包含模块的主要原因是为程序员提供了一种组织系统的方法,方法是将代码放在不同的位置,以微调代码的范围和访问权限。(也就是说,模块的成员存在多长时间,以及其他哪些代码可以引用和使用这些成员。)有时,您可能希望将代码放在单独的模块中,以便于使用。

所有VB.NET模块都是共享的,因为它们无法实例化(见上文),并且可以标记为Friend或Public,以便在同一程序集中或在引用它们时可以访问它们。

结构

在三种形式的物体中,结构是最难理解的。如果我们谈论的是“动物”而不是“物体”,那么这个结构将是一个土豚。

结构和类之间的最大区别在于结构是值类型,而类是引用类型。

这是什么意思?我很高兴你这么问。

值类型是直接存储在内存中的对象。整数是值类型的一个很好的例子。如果您在程序中像这样声明了一个整数。。。

Dim myInt作为整数=10

... 检查存储在myInt中的内存位置,会发现值为10。您还可以将其描述为“在堆栈上分配”。

堆栈和堆只是管理计算机内存使用的不同方式。

引用类型是对象的位置存储在内存中的对象。因此,查找引用类型的值始终需要两步查找。字符串是引用类型的一个很好的示例。如果您声明这样的字符串。。。

Dim myString as String=“这是myString”

... 检查myString中存储的内存位置,您会发现另一个内存位置(称为指针-这种方式是C风格语言的核心)。您必须转到该位置才能找到值“This is myString”。这通常称为“在堆上分配”。堆栈和堆

一些作者说,值类型甚至不是对象,只有引用类型可以是对象。确实,像继承和封装这样复杂的对象特性只有在引用类型中才能实现。但是我们在开始这篇文章时说,对象有三种形式,所以我必须接受结构是某种对象,即使它们是非标准对象。

结构的编程起源可以追溯到像Cobol这样的面向文件的语言。在这些语言中,数据通常作为连续平面文件处理。文件中记录中的“字段”由“数据定义”部分描述(有时称为“记录布局”或“副本”)。因此,如果文件中的记录包含:

1234567890ABCDEF9876

只有通过数据定义才能知道“1234567890”是一个电话号码,“ABCDEF”是一个ID,9876是98.76美元。结构可以帮助您在VB.NET中完成此操作。

结构1<VBFixedString(10)>将myPhone设置为字符串<VBFixedString(6)>将myID设置为字符串<VBFixedString(4)>将myAmount设置为StringEnd结构

因为字符串是引用类型,所以对于固定长度记录,必须使用VBFixedString属性保持长度相同。您可以在VB.NET中的“属性”一文中找到此属性和一般属性的扩展说明。

虽然结构是非标准对象,但在VB.NET中它们确实具有很多功能。您可以在结构中对方法、属性甚至事件和事件处理程序进行编码,但也可以使用更简化的代码,因为它们是值类型,所以处理速度会更快。例如,您可以像这样重新编码上面的结构:

结构1<VBFixedString(10)>将myPhone设置为字符串<VBFixedString(6)>将myID设置为字符串<VBFixedString(4)>将myAmount设置为StringSub mySub()MsgBox(“这是myPhone:&myPhone的值”)End SubEnd结构

然后像这样使用它:

将myStruct设置为Structure1myStruct.myPhone=“7894560123”myStruct.mySub()

花点时间玩弄一下结构并了解它们能做什么是值得的。它们是VB.NET的一个奇怪的角落,当你需要它的时候,它可以成为一个神奇的子弹。

  • 发表于 2021-10-09 07:40
  • 阅读 ( 192 )
  • 分类:编程

你可能感兴趣的文章

格拉纳(grana)和类囊体(thylakoid)的区别

...什么是类囊体(thylakoid)? 类囊体是叶绿体基质中的盘状膜结构,是参与光合作用光依赖反应的主要隔室。它们是微观的,主要通过电子显微镜观察。它们含有储存的叶绿素,通过光系统I和II捕捉太阳能,启动光合作用的光反应。...

  • 发布于 2020-09-22 23:22
  • 阅读 ( 611 )

类病毒(viroid)和类病毒(virusoid)的区别

...。 引用 1“微生物学”Lumen,这里有。“类病毒:定义和结构。”学习网,此处提供。2“类病毒:定义和结构。”学习网, img.centered,.aligncenter{display:block;margin:0 auto 24px}.gallery-caption,.wp-caption-text{font-size:14px;font-size:1.4rem;font-we...

  • 发布于 2020-10-15 06:15
  • 阅读 ( 350 )

叶绿素(chlorophyll)和类胡萝卜素(carotenoids)的区别

...,我们可以看到它们反射绿色的颜色。 图01:叶绿素 在结构上,叶绿素分子包含一个由碳、氢、氮和氧分子组成的卟啉环,围绕着一个金属离子镁。 什么是类胡萝卜素(carotenoids)? 我们随处可见的黄色、橙色和红色都是由于被...

  • 发布于 2020-10-21 22:56
  • 阅读 ( 485 )

病毒(virus)和类病毒(viroids)的区别

...,而其他没有包膜的病毒则是裸病毒。 图01:病毒 病毒结构也包含不同类型的投射物。这些投射物主要是糖蛋白。有些看起来像尖峰,因为它们是细而长的突起,而另一些是尖峰,它们是更宽的突起。冠状病毒具有类似三叶草...

  • 发布于 2020-10-23 02:31
  • 阅读 ( 277 )

朊病毒(prions)和类病毒(viroids)的区别

...为类似病毒颗粒的小型感染性微粒。然而,这两种类型在结构上都不同于典型的病毒颗粒。病毒由两个主要部分组成:遗传物质和蛋白衣壳。类病毒和朊病毒含有遗传物质或蛋白质衣壳。类病毒可以定义为在高等植物中引起疾病...

  • 发布于 2020-10-24 04:08
  • 阅读 ( 432 )

结构化的(structured)和非结构化编程(unstructured programming)的区别

...关键区别在于,结构化编程允许程序员将整个程序划分为模块或函数,而在非结构化编程中,代码是作为一个块编写的。 目录 1. 概述和主要区别 2. 什么是结构化编程 3. 什么是非结构化编程 4. 结构化与非结构化编程的相似性 5. ...

  • 发布于 2020-10-24 05:09
  • 阅读 ( 485 )

生物碱(alkaloid)和类黄酮(flavonoid)的区别

...noid)? 类黄酮是一种天然存在于植物中的多酚化合物。在结构上,类黄酮有一个15个碳的骨架,包含两个通过杂环吡喃环连接的苯环。植物合成类黄酮以应对微生物感染。它们是通过苯丙烷途径产生的。类黄酮可分为几类,如黄...

  • 发布于 2021-03-04 15:56
  • 阅读 ( 318 )

nad的模块化设计结构是什么?它能让音响发烧友受益吗?

... 解决方案是什么?模块化设计结构 ...

  • 发布于 2021-03-30 06:11
  • 阅读 ( 171 )

物体(objects)和班级(classes)的区别

...这些对象很容易用于您自己的代码和调试。另一个好处是模块化。您可以在编写对象的源代码的同时,以独占的方式继续编写对象的源代码。有了它,编程就以模块化的方式进行了。 类是在面向对象编程语言中使用的概念。这...

  • 发布于 2021-06-23 17:37
  • 阅读 ( 232 )

erd公司(erd)和类图(class diagram)的区别

...的关系。在面向对象建模中,类图是构建整个结构的主要模块。类图用于两个主要的things:They are 用于系统应用的概念建模。详细的建模以便翻译成程序代码。 类图有许多类和子类,这些类显示了主对象、它与其他类的交互以及...

  • 发布于 2021-06-23 21:07
  • 阅读 ( 323 )
baomangdui1671
baomangdui1671

0 篇文章

相关推荐