类包含对象数组。在终止包含的类时,我是否需要将它们中的每一个设置为空?

问题描述 投票:0回答:1

我正在使用如下代码。通过循环数据库结果并从每一行创建视图模型,在

BasketItemViewModel
类的范围内创建
Basket
数组。

当我放弃

Basket
类并将其设置为空时,我是否需要循环遍历
BasketItemViewModel
的数组并将每个类也设置为空?

Class Basket

    public GuidId
    public BasketItemViewModels
    public TotalItems
    public TotalCost

    Public Property Get TotalCostFormatted()
        TotalCostFormatted = FormatCurrency(TotalCost,0)
    End Property



    public Default function Init(p_GuidId, p_TotalItems, p_TotalCost)
        GuidId = p_GuidId
        BasketItemViewModels = GetBasketItemViewModels()
        TotalItems = p_TotalItems
        TotalCost = p_TotalCost
        set Init = Me
    end function 

    public function GetBasketItemViewModels()
        dim vmArray()

        for each row in dbResults
            // ...get some values...
            set vmArray(i) = (new BasketItemViewModel) (price, quantity, productId)
        next           

        GetBasketItemViewModels = vmArray
    end function 
End Class
arrays vbscript asp-classic
1个回答
4
投票

不。这不是必需的。当您的

Basket
对象被销毁时,
BasketItemViewModels
数组也会随之消失。当它消失时,该数组持有的所有引用都将被释放。

考虑以下示例:

Dim b
Set b = New Basket
Set b = Nothing
WScript.Echo "After"

Class Basket
    Public Eggs
    Sub Class_Initialize()
        Dim a(1)
        Set a(0) = New Egg
        Set a(1) = New Egg
        Eggs = a
    End Sub
End Class

Class Egg
    Sub Class_Terminate()
        WScript.Echo "Egg cracked."
    End Sub
End Class

此代码产生的输出是:

鸡蛋裂开了。
鸡蛋裂了。
后

证明当

Eggs
对象被销毁时,
Basket
数组被清空,并且它的引用被释放。

© www.soinside.com 2019 - 2024. All rights reserved.