gpt4 book ai didi

C# 奇怪的索引越界异常

转载 作者:行者123 更新时间:2023-11-30 13:56:27 26 4
gpt4 key购买 nike

在调试我为 MS Outlook 2010 开发的插件时,我遇到了一个奇怪的问题,即索引越界异常。我有一个类来进行消息处理,在该类的构造函数中,我传递了一个 MailItem。然后,我打算遍历 MailItem 的收件人列表,并找到在收件人、抄送和密件抄送字段中注册的所有收件人。为此,我有以下代码:

public MessageProcessor(Outlook.MailItem theMail)
{
_activeMailItem = theMail;
_activeMailDetails.Sender = theMail.SenderEmailAddress;
if (_activeMailItem.Recipients.Count > 0)
{
List<string> recipients = new List<string>();
List<string> cc = new List<string>();
List<string> bcc = new List<string>();
for (int i = 0; i < _activeMailItem.Recipients.Count; i++)
{
switch (_activeMailItem.Recipients[i].Type) <----- HERE
{
case (int)Outlook.OlMailRecipientType.olTo:
recipients.Add(_activeMailItem.Recipients[i].Address);
break;
case (int)Outlook.OlMailRecipientType.olCC:
cc.Add(_activeMailItem.Recipients[i].Address);
break;
case (int)Outlook.OlMailRecipientType.olBCC:
bcc.Add(_activeMailItem.Recipients[i].Address);
break;
}
}
}
}

但是,我在标记为“HERE”的地方得到了异常。当我调试并查看 Recipients.Count 属性的值时,它显示 1。但是,当“i”索引为 0(这应该是一个有效索引 - 在这种情况下,唯一有效索引).当我尝试查看 _activeMailItem.Recipients 集合时,我看到计数为 1;然而,当我试图在结构中进一步追踪时,我看到了一些红叉,我无法检查它下面的值。

有没有人知道哪里出了问题?

提前致谢。

最佳答案

Outlook 中的所有集合(包括收件人)都基于 1,而不是 0:

for (int i = 1; i <= _activeMailItem.Recipients.Count; i++)

关于C# 奇怪的索引越界异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28265551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com