继承导致类的行为类似于共享

时间:2014-10-07 23:14:01

标签: vb.net winforms inheritance

在Winforms上使用继承时,它会使该类显示为Shared。 为什么只有Main方法中的第二行显示语法警告? TestForm102.Widgets.Count应突出显示相同的问题。

注意:我将MustInherit添加到TestForm101以突出显示问题(...应显示的内容)。如果我将其删除,表单就会像分享它一样。

enter image description here

1 个答案:

答案 0 :(得分:2)

第一行有效,因为TestForm102TestForm102的实例,而不是人们期望的类型。它是由VS自动生成的,您可以在My.Forms中找到它。您的最后一行失败,因为VS无法自动生成MustInherit表单的实例和/或没有公共无参数构造函数的表单。此时TestForm101是一种类型,如上所述,您无法在没有对象引用的情况下引用非共享成员。

Dim y As Integer = My.Forms.TestForm102.Widgets.Count '<-Ok
Dim x As Integer = My.Forms.TestForm101.Widgets.count '<-Error
  

错误: 'TestForm101'不是... MyForms的成员