7

我一直在用头撞墙 25 分钟,试图弄清楚为什么我无法访问数组的“第一个”索引,而我试图用数组 [0] 来做。我不断收到数组索引越界异常。只是为了看看会发生什么,我尝试使用 array[1] ...并且它起作用了。完美。我不知道为什么。

for (int i = 1; i < itemCounter+1; i++)
{
     if (explorer.CurrentFolder.Items[i] is Outlook.MailItem)
     { //Do something }
}

整个事情运作良好。这里发生了什么?

4

2 回答 2

17

Outlook 对象模型似乎是 Office 对象模型的一部分,正如http://msdn.microsoft.com/en-us/library/aa189134%28v=office.10%29.aspx所述,

Office 应用程序中使用的大多数集合(Access 除外)都是从一开始的,即集合中第一项的索引号为 1。

此外, http: //msdn.microsoft.com/en-us/library/522xhsa3%28v=vs.90%29.aspx特别告诉我们

要访问 Microsoft Office 应用程序对象模型中集合的第一项,请使用索引 1 而不是 0。

于 2012-07-16T20:31:23.257 回答
1

是的,它看起来像 Items 返回一个集合 object,并且当使用这样的数组修饰符访问时,这些都是已知的。您应该能够执行 .ToArray() 来获得您期望的行为,否则您可以简单地使用foreach var item in items并获取文件夹中的所有内容,并且构造也可以保证终止。

于 2012-07-16T20:28:57.767 回答