- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我注意到 Stack Overflow 社区的一些成员会在关闭过程中使用 Set Object = Nothing
。我能够找到为什么这对于 Access 实例很有用,但在为 Excel 执行此操作时没有令人满意的答案,所以我的问题是在 VBA 中将对象设置为 Nothing 有什么好处?
在下面的示例代码中,将我的对象 ws
和 Test
设置为 Nothing
是否浪费空间? 否则,如果这样做实际上是很好的做法,为什么?
Dim ws as Worksheet
Dim Test as Range
Set ws = Sheets(“Sheet1”)
Set Test = ws.Range(“A1”)
'Utilize Test variable (copy, paste, etc)
Set Test = Nothing
Set ws = Nothing
Exit Sub
最佳答案
如果这是托管 .NET 代码(垃圾收集),您必须释放
您曾经访问过的每个 COM 对象,以免主机进程(EXCEL.EXE) 可能会在后台继续运行,消耗内存并且无法完全卸载。
但这是 VBA 代码(引用计数),而且使用主机应用程序控制的对象的 VBA 代码 - 当主机应用程序关闭时以及发生这种情况时,这些对象将消失VBA 执行上下文早已消失。
换句话说,所有这些Set ... = Nothing
指令都是完全多余的。
在某些特定情况下,当您处理第 3 方 API/类型库时,对象可能无法完全清理。例如,您可能正在创建一个 Access.Application
实例,并发现“幽灵”ACCESS.EXE 进程在 Excel 退出后在任务管理器中保持打开状态:这表明您正在泄漏对象以某种方式在某处引用,Set ... = Nothing
可以帮助防止这种情况发生。
但是我不建议像这样系统地清空所有对象引用。仅当不这样做时才会出现问题。即便如此,拖累一切的也只是一两个物体,而不是所有物体。如果 ACCESS.EXE 正确关闭,则没有理由用此类指令使您的代码变得困惑。
避免在全局状态中存储对象引用也有帮助。如果一切都是本地的,理论上,一旦本地作用域退出,所有涉及的对象都会被销毁。
关于excel - 将对象设置为 "Nothing"有什么好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51065566/
这里有没有人使用 VB.NET 并且强烈偏好或反对使用 Not foo Is Nothing而不是 foo IsNot Nothing ?如果是这样,为什么? 例如 If var1 IsNot Not
我刚开始使用 git,我有点困惑。我想要做的是为特定项目文件夹设置一个新的存储库。我的第一个问题是我究竟需要在终端、桌面或文件夹本身的什么地方进行文件初始化来初始化文件。我尝试导航到实际文件夹并输入
在VB中是否有任何情况x = Nothing与 x is Nothing 不一样? 另外,x <> Nothing对比 x IsNot Nothing 我认为它们完全相同..但只是想确定一下。 最佳答
我们在 VB.Net 中有几个项目,使用 .Net Framework 4 和 Linq to Entities 来处理我们的许多 SQL 查询。迁移到 EF 对我们来说是一个新的转变(已经使用了大约
似乎我理解错了,但我尝试了以下方法: GHCi, version 8.6.5 Nothing == Nothing => True Nothing == (pure Nothing) => False
在我的程序中,我想用 Nothing 初始化一堆矩阵,然后如果满足某些条件,将单个元素更改为 Bool 类型的值或 String 这在我初始化时工作正常 Array{Union{Nothing,Boo
我有以下代码,无法编译: object PcpProtocol { private type PcpKV = String private val findPublicKey: List[Pc
在 VB.NET , 有什么区别 if foo is Nothing Then doStuff() End If 和 if foo=Nothing Then doStuff() E
我试图在现有字典的第二层实例化一个空字典,然后为其分配一个键值对,但 MyPy 抛出错误。 这是一个最小的示例,它将在激活 MyPy 检查时重现它: result = {"Test": "someth
我正在将一个最初用 Java 编写的 Android 应用程序转换为 Kotlin。我很难理解以下错误消息: Type mismatch.Required:MenuSlidingTabStrip.On
我有: Dim nVar1 As Long? Dim nVar2 As Long? Dim nVarSum As Long? nVar1 = Nothing nVar2 = 5 nVarSum = n
我正在构建一个控制 git 存储库的 PHP 应用程序。我有一个执行命令 git status 的同步函数,虽然没有返回“你的分支是最新的”,但可能会提前采取必要的行动,比如远程或本地分支。 我还构建
我如何确定一个 perl 函数返回 nothing 甚至 undef? 例子: sub test { return; } 或 sub test {} 问题是好奇的代理函数也可以返回字符串、列表…
我希望 vim 在没有打开或创建文件时打开 :Explorer。例如。当我打电话时vim没有任何选择。 调用 vim newfile.txt尽管如此,仍然应该以正常方式行事。 我该怎么做呢?我似乎找不
我知道 Scala Nothing 是底层类型。当我看到 API 时,它从层次结构中的顶部的“Any”扩展而来。 现在既然Scala不支持多重继承,怎么能说是底层类型呢?换句话说,它没有直接继承所有的
我正在尝试检查“Listivew.Tag 属性是否为空”。 我过去常常对所有场景进行“什么都没有”检查作为第一次检查以避免错误 有人可以解释如何在 VB 6 中做到这一点吗? If Not .lvw
我有一对看起来像这样的类(class)。有一个 Generator根据一些类级别的值生成一个值,和一个 GeneratorFactory构造一个 Generator . case class Gene
这是我去年遇到的事情,SO 似乎是记录它的好地方:) 问:从 Delphi 自动化 Excel (/Word/...) 时,如何检查 Excel 函数是否返回变体 Nothing(如 VBA 中的调用
给定一个多态性状 trait Transform[T] { def apply( t: T ) : T } 人们可能喜欢实现各种专门的实例,例如 case class Add[Double] ex
这个问题已经有答案了: Java do nothing (6 个回答) Empty if-statements [duplicate] (9 个回答) 已关闭 4 年前。 我正在编写一个 if-els
我是一名优秀的程序员,十分优秀!