gpt4 book ai didi

vba - 传递现有的 FileSystemObject 或创建多个实例

转载 作者:行者123 更新时间:2023-12-04 20:21:07 25 4
gpt4 key购买 nike

我有几个使用 FileSystemObject 的过程。我觉得挺方便的。

问题:将 FileSystemObject 的现有实例作为参数从“主”过程传递到这些其他过程,而不是让每个过程创建自己的 FileSystemObject 实例是否明智?

示例:以任何方式执行此操作是否更好:

Sub MainSub()
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
Call OtherSub(FSO, myargs)
' call other subs and functions that use FileSystemObject
End Sub

Sub OtherSub(FSO, myargs)
' Do stuff with FSO
' call other subs and functions that use FileSystemObject
End Sub

我见过至少一位程序员这样做,而不是我通常做的以下事情:
Sub MainSub()
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
Call OtherSub(myargs)
' call other subs and functions that use FileSystemObject
End Sub

Sub OtherSub(myargs)
Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
Call OtherSub(myargs)
' Do stuff with FSO
' call other subs and functions that use FileSystemObject
End Sub

我可以看到做前者的想法,因为这可能会减少与拥有多个 FileSystemObject 实例相关的开销。但是每次都必须将 FSO 作为参数传递似乎非常麻烦。说真的,开销真的有那么大吗?

最佳答案

我最近做了这样的事情,我个人更喜欢尽可能使用单个文件系统对象。我认为它是在函数之间传递文件句柄,然后写入打开的文件句柄。

定义函数/子函数时,请确保使用 ByRef 传递文件系统对象。关键词。

唯一 Not Acceptable 情况是,如果您正在浏览文件层次结构,并且您需要 FSO 来维护相同的目录。但是,应该注意的是,在当今的计算机中,单个 FSO 的内存需求可以忽略不计,并且只有在需要使用递归函数或重复调用创建/销毁这些对象的函数时才会注意到性能提升。

关于vba - 传递现有的 FileSystemObject 或创建多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6510662/

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