【发布时间】:2016-04-05 18:52:16
【问题描述】:
在 VB.Net 中声明一个过程时,其中传递的参数是一个对象,是否可以在“或”类型的语法中指定几种可能的对象类型?
例如,我想传递“列表”控件之一,以便该过程可以访问 .Items 集合。但是如果我尝试将参数概括并指定为 Windows.Forms.Control,则会生成错误,因为 .Items 不是 .Control 对象的成员。
我在 VB 语言参考中看到提到“类型列表”,这似乎几乎是我想要的,但不完全是。
这里有一些代码来演示这个问题...
Friend Sub ListFill( _
ByRef SourceControl As Windows.Forms.WebBrowser, _
ByRef TargetControl As Windows.Forms.Control)
TargetControl.Items.Add(SourceControl.DocumentTitle)
' Error: 'Items' is not a member of 'System.Windows.Forms.Control'.
一般意义上,我需要这样的语法...
Friend Sub name ( ByRef varname As { type1 Or type2 Or ... } = defaultvalue )
但就实际工作代码而言,这是我所得到的......
Friend Sub ListFill( _
ByRef SourceControl As Windows.Forms.WebBrowser, _
Optional ByRef TargetControl As Windows.Forms.ListBox = Nothing, _
Optional ByRef TargetControl As Windows.Forms.ComboBox = Nothing)
'Error: Parameter already declared with name 'TargetControl'.
这个可以吗?
【问题讨论】:
-
只有
Items是您需要的吗? -
可以选择解决你的问题吗?
标签: vb.net visual-studio visual-studio-2012