MSDN Web サイトから取得した以下のコードをご覧ください。
Sub Page_Load(sender As Object, e As EventArgs)
' Generate rows and cells.
Dim numrows As Integer = 3
Dim numcells As Integer = 2
Dim j As Integer
For j = 0 To numrows - 1
Dim r As New TableRow()
Dim i As Integer
For i = 0 To numcells - 1
Dim c As New TableCell()
c.Controls.Add(New LiteralControl("row " & j.ToString() & ", cell " & i.ToString()))
r.Cells.Add(c)
Next i
Table1.Rows.Add(r)
Next j
End Sub 'Page_Load
行ごとに TableRow の新しいインスタンスがあり、テーブル セルごとに作成された TableCell の新しいインスタンスがあります。これについて 2 つの質問があります。
- これらのインスタンスはどのように破壊されますか? すなわち
c = Nothing
。確かにメモリリークがありますか? TableRow
Table クラスは、 andのインスタンスがどこにあるかをどのように知るのTableCell
でしょうか? 私が尋ねる理由はTableCell
、複数のテーブルセルとTableRow
複数のテーブル行のインスタンスを再利用できないように見えるためです。つまり、次のようなことはできません。Dim objTable As New Table Dim objTableRow As New TableRow Dim objTableCell As New TableCell objTableCell.Text = "Test Row 1 Cell 1" objTableRow.Cells.Add(objTableCell) objTableCell.Text = "Test Row 1 Cell 2" objTableRow.Cells.Add(objTableCell) objTable.Rows.Add(objTableRow) objTableCell.Text = "Test Row 2 Cell 1" objTableRow.Cells.Add(objTableCell) objTableCell.Text = "Test Row 2 Cell 2" objTableRow.Cells.Add(objTableCell) objTable.Rows.Add(objTableRow) objTableCell.Text = "Test Row 3 Cell 1" objTableRow.Cells.Add(objTableCell) objTableCell.Text = "Test Row 3 Cell 2" objTableRow.Cells.Add(objTableCell) objTable.Rows.Add(objTableRow)