首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取"Index超出了数组的界限“。同时调用EnvDTE80.ErrorItems.item()

获取"Index超出了数组的界限“。同时调用EnvDTE80.ErrorItems.item()
EN

Stack Overflow用户
提问于 2017-02-10 12:50:00
回答 2查看 281关注 0票数 4

我试图获取VisualStudio2015错误列表窗口中的所有错误,但是在尝试通过ErrorItem (I)调用访问errors.Item时,我得到了一个超出绑定异常的索引。我错过什么演员了吗?

代码语言:javascript
复制
EnvDTE80.DTE2 dte2 =  ServiceProvider.GetService(typeof(EnvDTE.DTE)) as DTE2);
ErrorItems errors = dte2.ToolWindows.ErrorList.ErrorItems;
for (int i = 0; i < errors.Count; i++)
{
    ErrorItem item = errors.Item(i);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-10 13:14:38

ErrorItems.Item方法似乎需要一个绝对索引,从1开始,所以将循环更改为:

代码语言:javascript
复制
for (int i = 1; i <= errors.Count; i++)

那就应该管用了。

票数 5
EN

Stack Overflow用户

发布于 2017-02-10 13:04:41

所有列表或数组的.Count()方法从1开始,而IT世界中的索引总是从0开始。所以在最后,你的计数会达到一个不在你的索引中的数字。

因此,尝试BviLLe_Kid的建议,并减去1。

编辑

好吧算了吧。我觉得那是脑力滞后。但是我认为删除这个答案是不必要的,因为我可以判断出BviLLe_Kid的建议是错误的。

科学

代码语言:javascript
复制
    static void Main(string[] args)
    {
        List<string> tmpList = new List<string>();
        for (int i = 0; i < 10; i++)
        {
            Debug.WriteLine("List Item No" + i);
            tmpList.Add("Item " + i);
        }
        Debug.WriteLine("_____________");
        Debug.WriteLine("List Count: " +tmpList.Count());
        Debug.WriteLine("_____________");
        for (int i = 0; i < tmpList.Count(); i++)
        {
                Debug.WriteLine(tmpList[i]);
        }
    }

调试:

列表项目No0 列表项目No1 列表项目No2 列表项目No3 列表项目No4 列表项目No5 列表项目No6 列表项目No7 列表项目No8 列表项目No9

清单计数: 10

项目0

项目1

项目2

项目3

项目4

项目5

项目6

项目7

项目8

项目9

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42159829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档