我最近对接口以及在默认状态下使用它们之外进一步自定义它们的能力非常感兴趣。
我一直在专门研究 IList(of T)。与 ArrayLists 相比,使用泛型列表的优势让我大吃一惊。这是一张测试的照片。这是进一步解释测试的站点。
所以,很自然地我想尝试一下。当我第一次使用 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 = 新内阁.aForm
撕开这个给我的人。谢谢。