我一直在靠墙撞击25分钟,试图找出为什么我无法访问数组的'第一个'索引,我试图用数组[0]。我不断得到一个超出界限的数组索引。只是为了看看会发生什么,我尝试使用数组[1] ......并且它有效。完美。我不知道为什么。
for (int i = 1; i < itemCounter+1; i++)
{
if (explorer.CurrentFolder.Items[i] is Outlook.MailItem)
{ //Do something }
}
整件事情很好。这是怎么回事?
答案 0 :(得分:14)
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。
答案 1 :(得分:1)
是的,它看起来像Items返回collection object,并且当使用类似的数组修饰符访问时,已知这些是棘手的。你应该可以做.ToArray()来获得你期望的行为,否则你可以简单地使用foreach var item in items
并获取文件夹中的所有内容,同时保证终止的构造。