【发布时间】:2015-05-23 00:32:56
【问题描述】:
我有一个从别人那里收到的 VB.net 程序。我正在尝试对其进行修改。该程序由一个主窗体和 6 个类(所有 .vb 文件)组成。
在主窗体中,我想在其他类之一中调用子例程。我从之前的帖子中了解到,我需要创建一个类的实例才能调用该方法。我是这样做的:
dim qt as new QuoteMgr
qt.Method("foo");
当我输入这个时,我得到了错误:
Argument not specified for parameter 'oKernel'
of 'Public Sub New(oMainSymbol As String, ByRef
oKernel As Kernel)'
我认为这是因为在 Class 中有一个名为“New”的子例程,它看起来像这样:
Public Sub New(ByVal oMainSymbol As String, ByRef oKernel As Kernel)
_Kernel = oKernel
End Sub
如何实例化 QuoteMgr 类的新实例,而不会遇到这个“新”子例程?
【问题讨论】:
-
你不能。
Sub New是构造函数。当您创建一个 new 实例时调用它,如dim qt as New QuoteMgr。该消息告诉您,要创建一个新的,您必须提供一个MainSymbol字符串和一个kernel对象(无论是什么):dim qt as New QuoteMgr(sym, krnl) -
谢谢。我想知道我是否可以摆脱这个“新”子程序。
-
可能不会。该类可能需要这些东西才能做任何有价值的事情。因此编写它的人决定必须在创建对象时指定它们。
-
Alice,这似乎是您的问题的延续:stackoverflow.com/questions/30338944/…。我添加了对这个特定问题的解释,以及一些获得教程和了解基本语言特性的建议,例如“构造函数”、“参数”、“实例”、“参数”、“成员变量”……摆脱这个“新”例程不太可能对您有所帮助,因为
QuoteMgr几乎肯定会依赖于Kernel和oMainSymbol的有效实例的存在。 -
谢谢。你知道内核可能是什么吗?