【发布时间】:2015-07-21 13:00:44
【问题描述】:
这两行有什么区别?
Set MyMsg = MyMsg.Move(MyFolder2)MyMsg.Move(MyFolder2)
第一个效果很好。 第二个通常会给出“Outlook 没有响应”错误。
【问题讨论】:
这两行有什么区别?
Set MyMsg = MyMsg.Move(MyFolder2)MyMsg.Move(MyFolder2)第一个效果很好。 第二个通常会给出“Outlook 没有响应”错误。
【问题讨论】:
MailItem.Move 方法返回已移动的 MailItem。通常,属性返回值和方法不返回任何内容。但是对于一些方法,设计者认为有一个返回值会很方便,所以他们让它们返回一个值(或对象)。
将方法分配给变量时,任何参数都必须放在括号中,否则会出现语法错误。如果您调用一个方法而不将其分配给一个变量(因为您不关心该方法返回什么或者它是不返回值的方法之一),那么参数不能在括号中(种类)。
括号,当在编译器不需要它们的地方使用时,相当于说“在做任何其他事情之前先评估它”。这就像您如何按运算顺序使用括号一样,因此您可以说“在执行此乘法之前评估此加法运算,即使这不是正常顺序”。
上面的(某种)评论是因为大多数时候当你“错误地”把括号括起来时,这并不重要。
Application.CreateItem 0
和
Application.CreateItem (0)
都是一样的。第二个在将参数传递给CreateItem 之前评估参数,但是评估单个整数不需要时间并且没有不良影响。括号不是必需的,因为我们没有将结果分配给变量,但它们也没有真正伤害任何东西。
在第二个示例中,您告诉编译器评估文件夹,然后将其发送到 Move 方法。我不知道评估文件夹意味着什么,但我认为它不好。它可能会做一些事情,比如在那个文件夹中创建一个所有对象的数组,或者同样密集的事情。如果 Outlook 没有响应,则意味着您给了它很大的工作量,以至于它没有及时重新检查操作系统。
所以:当参数位于等号的右侧时,使用括号作为参数。不使用时不要使用它们。该规则有一些例外,但您可能永远不需要知道它们。
【讨论】:
两者之间没有区别(您只是忽略函数结果),除非您之后实际使用 MyMsg 变量 - 移动消息后,您将无法再访问它。
使用第一个版本。
【讨论】: