我有一个类“投资组合”(其中类“股票”作为它的字段之一)方法,代码如下:
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()
叫 at Next i
?什么时候调用?现在写对了吗?或者我是否也应该编写代码将每个非对象归档设置为空值?
2)好的,它没有被调用,但我仍然有Dim TempStock As New Stock
?它不应该给我双重声明错误吗?或者TempStock
至少设置为新的空对象?
3)有什么区别:
Dim TempStock As New Stock
和:
Dim TempStock As Stock
Set TempStock = New Stock
它与我的问题有关吗?
对我的问题的任何部分的帮助将不胜感激,谢谢!