在何种场景下应选用With-End With语句,何种情况下VB6中宜用普通对象引用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计397个文字,预计阅读时间需要2分钟。
你阅读我正在维护的代码时,发现某些地方使用了With + End With结构。例如,With my_object.do_this().do_that().do_the_other()。有时会更直接地截取,如my_object.do_this().do_that().do_the_other()
仔细阅读我正在维护的代码,我发现在某些地方使用了With – End With构造……With my_object .do_this() .do_that() .do_the_other() End With
有时更直截了当
my_object.do_this() my_object.do_that() my_object.do_the_other()
这两种形式之间是否存在细微差别?总的来说,我应该选择哪个?
(我个人的观点是,我选择了第二次,因为在第一次开始两到三次嵌套后,它开始让我的头受伤 – 这是一个充分的理由吗?)
贾斯汀是不正确的.随着…结束与构造不仅仅是语法糖果,它也是一个性能技巧.当您有一个包含多个点(.)的对象路径时,性能提升非常明显,特别是在循环和/或处理类型(结构)时.例如,这段代码:
For x = 1 to my_object.Employee.Records.Count Debug.Print my_object.Employee.Records(x).ID Next
将会更快:
For x = 1 to my_object.Employee.Records.Count With my_object.Employee.Records(x) Debug.Print .ID End With Next
并且,正如@wqw所指出的,它可能会更快(取决于你需要访问多少属性),因为它提供了最少量的对象重新鉴定:
With my_object.Employee.Records For x = 1 to .Count Debug.Print Item(x).ID Next End With
试一试,你会发现差异.
本文共计397个文字,预计阅读时间需要2分钟。
你阅读我正在维护的代码时,发现某些地方使用了With + End With结构。例如,With my_object.do_this().do_that().do_the_other()。有时会更直接地截取,如my_object.do_this().do_that().do_the_other()
仔细阅读我正在维护的代码,我发现在某些地方使用了With – End With构造……With my_object .do_this() .do_that() .do_the_other() End With
有时更直截了当
my_object.do_this() my_object.do_that() my_object.do_the_other()
这两种形式之间是否存在细微差别?总的来说,我应该选择哪个?
(我个人的观点是,我选择了第二次,因为在第一次开始两到三次嵌套后,它开始让我的头受伤 – 这是一个充分的理由吗?)
贾斯汀是不正确的.随着…结束与构造不仅仅是语法糖果,它也是一个性能技巧.当您有一个包含多个点(.)的对象路径时,性能提升非常明显,特别是在循环和/或处理类型(结构)时.例如,这段代码:
For x = 1 to my_object.Employee.Records.Count Debug.Print my_object.Employee.Records(x).ID Next
将会更快:
For x = 1 to my_object.Employee.Records.Count With my_object.Employee.Records(x) Debug.Print .ID End With Next
并且,正如@wqw所指出的,它可能会更快(取决于你需要访问多少属性),因为它提供了最少量的对象重新鉴定:
With my_object.Employee.Records For x = 1 to .Count Debug.Print Item(x).ID Next End With
试一试,你会发现差异.

