【发布时间】:2012-10-22 23:02:33
【问题描述】:
我有一个“投资组合”类(它的字段之一是“股票”类)方法,代码如下:
For i = 1 To n
Dim TempStock As New Stock
TempStock.Set_Stock 'sets TempStock
...
Next i
“Stock”是我的用户定义类,具有这样的结构、构造函数和析构函数:
Private StockName As String
Private CurDate As Date
Private BidPrice As Double
Private AskPrice As Double
Private StockDivs As Dictionary
Private Sub Class_Initialize()
Set StockDivs = New Dictionary
End Sub
Private Sub Class_Terminate()
Set StockDivs = Nothing
End Sub
我的意思是,在每个循环中,我都将声明并使用空字段初始化新的临时对象。但是在逐步运行我的程序之后,在我看来 Class_Terminate() 在循环结束时没有被调用。在下一步中,TempStock 的所有字段都已设置为它们在前一个循环中的设置。所以,我不明白以下几点:
1) 为什么Class_Terminate() 不调用Next i?什么时候调用?现在写对了吗?或者我是否也应该编写代码将每个非对象归档设置为空值?
2) 好的,它没有被调用,但我还有Dim TempStock As New Stock?它不应该给我双重声明错误吗?或者至少将TempStock 设置为新的空对象?
3) 有什么区别:
Dim TempStock As New Stock
和:
Dim TempStock As Stock
Set TempStock = New Stock
这和我的问题有关吗?
对于我的问题的任何部分的帮助将不胜感激,谢谢!
【问题讨论】: