【发布时间】:2010-12-19 15:21:25
【问题描述】:
我是 vb.net 的新手,非常沮丧。
像所有优秀的程序员一样,我想根据功能将我的代码拆分为单独的文件。我的一些代码通过表单与用户交互,一些在幕后与实验室设备交互(没有直接的用户交互)。有时用户会改变一些会影响实验室设备的东西,有时用户需要注意的实验室设备会发生一些事情。当我使用 VS 创建文件时,我必须选择一个模块或表单。然后 VS 创建一个空文件,其中包含一个
公开课 Foo
结束类
或
模块 Foo
结束模块
如果我有一堆文件,每个文件都是一个模块,并且如果我在一个模块中定义例程成为朋友,那么我可以从其他模块调用它们,所以:
模块 Foo
Friend Sub DoSomeWork()
End Sub
结束模块
Fee 中的代码可以调用 Foo 中的例程 -
模块费用
Friend Sub Stuff()
DoSomeWork()
End SUb
结束模块
当我创建表单时,VS 会创建一个类。我发现我可以从一个类调用一个模块中定义的子例程,但是当我尝试从一个模块调用一个类时,我收到一个错误,我试图调用的例程没有声明。我也不能从一个班级呼叫另一个班级。声明似乎只适用于我的程序之外的库例程。
我浏览了几个在线解释和教程,但坦率地说,我不理解这些,也不关心“从基类继承”以及这些“解释”包含的所有其他 gobbledygook。我想专注于构建我的应用程序。
我的主窗体的名称为“Main”
我尝试通过将“Module Foo”重命名为“Public Partial Class Main”首先将所有模块代码放入主类 - 坏主意 - 会产生无法找到的重复错误。我尝试创建空代码文件,将它们定义为公共部分类主并将模块代码放入其中,这在主类中的代码中有效,可以调用“模块”代码(现在在主中),反之亦然,但是,其他表单(当然我有多个)是由 VS 创建的以拥有自己的类,一旦“模块”代码从模块移到主类中,其他表单(类)就不能再调用代码了.
我只想要一些我可以遵循的方法(最佳实践)来定义模块和类,以便可以共享代码和数据。
下面的回答
要调用另一个类中的子例程,您只需将类名放在子例程名称的前面。
所以没有
DoSomeWork()
但是
Foo.DoSOmeWork()
这对你们所有有经验的程序员来说可能很明显,但对我来说不是。您不必在模块到模块调用或类到模块调用之前添加类/模块名称,只需添加到类中的调用即可。就个人而言,为了一致性,我认为事情应该是一样的,但它可能会违反一些 OO 规则。总之谢谢大家。
【问题讨论】:
-
我建议你离开VB,学习一个C变体(C#,因为它的.NET和你目前所学的可以在C#中应用)