次のコードで tmpTabPages の有効期間を把握しようとしています。フォームに MyTabControl という名前の空の TabControl があり、NameCollection という文字列のコレクションがあるとします。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each itm In NameCollection
Dim tmpTabPage as New TabPage(itm.toString)
'Add Controls to tmpTabPage
MyTabControl.TabPages.Add(tmpTabPage)
Next
End Sub
tmpTabPage のスコープは For/Next ブロックであるため、通常、その有効期間はブロックの最後までですよね? しかし、ブロック外のスコープを持つコレクションに追加されるため、コレクション、またはこの場合は MyTabControl と同じ有効期間を取得しますか? 最後に、MyTabControl.TabPages.Clear を呼び出すと、コレクション内の tmpTabPages は破棄されますか、それともメモリを占有するだけですか?