【发布时间】:2013-02-08 15:40:46
【问题描述】:
我有两个类,RecordSet 和 Record。 RecordSet 有一个通用列表(记录)。
我可以通过调用我的 RecordSet.AddRecord(ObjRecord) 函数将对象添加到列表中,该函数返回 RecordSet。当列表计数为 200 时,进行一些处理并返回一个新的 RecordSet 对象,否则返回自身,应用程序可以继续将 Record 对象添加到列表中。
我担心在垃圾收集完成之前会有 200 个 RecordSet 对象。这是个好主意吗?
Public Class RecordSet
Private lstRecords As New List(Of Record)
Public Function AddRecord(SomeVariable) AS RecordSet
lstRecords.Add(New Record())
If lstRecords.Count = 200 Then
Me.ProcessTheRecords()
Return New RecordSet()
Else
Return Me
End If
End Function
Private Sub ProcessTheRecords()
'Do stuff in here
End Sub
Private Class Record
Public Sub New()
End Sub
End Class
End Class
然后在我的应用程序中调用:
Dim objRecordSet AS New RecordSet
For Each VariableName In SomeList
objRecordSet = objRecordSet.AddRecord(VariableName)
Next
'Process the remaining objects in objRecordSet here.
【问题讨论】:
-
这听起来像个糟糕的设计。
-
您正在从 add 返回全新的空记录集,因此对旧记录集的引用正在丢失。存储某些东西并丢失密钥充其量相当于根本不存储它。更糟糕的是,浪费了代码、cpu 周期和系统内存。
-
这似乎是一个更适合 Programmers.SE 或 codereview.SE 的问题
标签: asp.net vb.net garbage-collection