gpt4 book ai didi

vb6 - New and Nothing 中有趣的结果

转载 作者:行者123 更新时间:2023-12-02 00:54:01 25 4
gpt4 key购买 nike

我正在使用 VB6,刚刚在我团队成员的代码中发现了一些有趣的东西。

Dim anObject As New AClass
Set anObject = Nothing

anObject.DoingSomeThing

如我所料,代码应该会失败,因为 anObject 现在设置为 Nothing,但代码可以正常运行?

如果我把上面的代码改成

Dim anObject As AClass
Set anObject = New AClass
Set anObject = Nothing

anObject.DoingSomeThing

这将失败,因为 anObject 现在是 Nothing。

我不明白为什么代码可以在第一个代码中运行但在第二个代码中失败?

最佳答案

在 VB6 中,如果您将某个对象声明为 As New,则 VB 会在内部放置隐藏代码以检查对象是否存在,并可选择在每次使用该对象之前实例化该对象。明确地这样的代码看起来像:

If anObject Is Nothing Then Set anObject = New AClass

在第二种情况下,您必须自己维护对象的存在。

注意 - 最好不要使用 As New。它的性能更差,如果您需要将项目移植到 VB.NET,那么行为就会改变;在 VB.NET 中声明变量 As New 只是首先初始化它,但在将它设置为 Nothing 后不会重新初始化它。

关于vb6 - New and Nothing 中有趣的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37337807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com