C#Outlook加载项阵列从1开始?

时间:2012-07-16 20:20:01

标签: c# outlook outlook-addin

我一直在靠墙撞击25分钟,试图找出为什么我无法访问数组的'第一个'索引,我试图用数组[0]。我不断得到一个超出界限的数组索引。只是为了看看会发生什么,我尝试使用数组[1] ......并且它有效。完美。我不知道为什么。

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

整件事情很好。这是怎么回事?

2 个答案:

答案 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并获取文件夹中的所有内容,同时保证终止的构造。