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