【发布时间】:2012-08-21 08:50:15
【问题描述】:
我最近对接口以及在默认状态下使用它们之外进一步自定义它们的能力非常感兴趣。
我一直在专门研究 IList(of T)。与 ArrayLists 相比,使用泛型列表的优势让我大吃一惊。这是test 的图片。这是进一步解释about the Test的站点。
所以,我很自然地想尝试一下。当我第一次使用 ForNext 方法遍历列表时,代码工作正常。第二次我无法访问列表中表单的名称,因为它已被释放。任何人都知道如何访问列表中的表单属性。
Public Class frmMain
Dim Cabinet As List(Of Form) = New List(Of Form)
Dim FormA As New Form1
Dim FormB As New Form2
Dim FormC As New Form3
Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles _Me.Load
Cabinet.Add(FormA)
Cabinet.Add(FormB)
Cabinet.Add(FormC)
End Sub
Sub displayForm(ByVal aForm As Form)
Dim myFormName As String = ""
Stopwatch.Start()
If aForm.IsDisposed = False Then
aForm.Show()
Else
myFormName = aForm.(How do I access this objects Name?)
aForm = New Form '<----- I would rather simply use aForm = New(aForm)
aForm.Name = myFormName
aForm.Show()
End If
Stopwatch.Stop()
Dim RealResult As Decimal = (Stopwatch.ElapsedMilliseconds / 1000)
Debug.WriteLine(RealResult)
Stopwatch.Reset()
End Sub
Private Sub btnForEach_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnForEach.Click
'Dim instance as List
'Dim action as Action(of T)
'instance.ForEach(action)
'action = delegate to a method that performs an action on the object passeed to it
Cabinet.ForEach(AddressOf displayForm)
End Sub
我真的不明白为什么如果VB知道这是一个通用列表,这意味着它知道列表的类型,并且对象都被限制为表单;为什么我不能在列表中的项目上调用构造函数。前任。 aForm = 新的 aForm 或 aForm = 新的 Cabinet.aForm
有人为我撕开这个。谢谢。
【问题讨论】:
-
好吧,我刚刚发现如果我使用 Ctype(myListObject, Form) 我可以访问 Form.text 属性。如果有人对此有 2 美分,我想听听。
标签: vb.net list foreach arraylist