C#:索引超出了范围,必须是非负的,并且小于集合的大小



我进行了以下编程。运行该应用程序显示错误消息:索引超出范围。必须是非负的,并且小于收集的大小。

编辑:

public void SetShortcuts()
    {
        List<string> Verknüpfung = new List<string>();
        int i = 0;
        int j = 0;
        try
        {
            foreach (string Datei in Directory.GetFiles(PfadShortcuts, "*.txt"))
            {
                Verknüpfung.AddRange(File.ReadAllLines(Datei, Encoding.UTF8));
                Image ShortcutIcon = new Image();
                ShortcutIcon.Source = new BitmapImage(new Uri(@"Fugue Iconsdocument.png", UriKind.Relative));
                ShortcutIcon.Height = 16;
                ShortcutIcon.Width = 16;
                ShortcutIcon.Stretch = Stretch.None;
                MenuItem Shortcut = new MenuItem();
                Shortcut.Icon = ShortcutIcon;
                Shortcut.Header = Verknüpfung[0 + i];
                Shortcut.Padding = new Thickness(5);
                Shortcut.Click += delegate { Process.Start(Verknüpfung[0 + j]); };
                Shortcuts.Items.Add(Shortcut);
                i += 2;
                j++;
            }
        }
        catch
        {
            Fehlermeldung_Main_Shortcuts();
        }
    }

你能帮我吗?预先感谢。

善意。

看行:

Verknüpfung.AddRange(File.ReadAllLines(Datei, Encoding.UTF8));

Shortcut.Click += delegate { Process.Start(Verknüpfung[1 + i]); };

verknüpfung[1 i]比列表中的项目数高一个。

i似乎比列表所填充的速度更快。

尝试更改

Shortcut.Click += delegate { Process.Start(Verknüpfung[1 + i]); };

to

Shortcut.Click += delegate { Process.Start(Verknüpfung[0 + i]); };

如果您查看错误消息,它实际上会告诉您发生了什么(您只需要能够说语言)即可。"索引超出范围"是指您有N项目,并且您尝试采用(n 1)项目。换句话说,您正在尝试获得不存在的东西,这可能是由于程序中的逻辑错误所致,但也可能是您期望拥有n 1个项目,但不要。

抓住此问题的最佳方法是使用调试器首先找出您正在获得例外的行。将断点放在您的foreach(Verknüpfung.AddRange)中的第一行将使您进行调试。

要消除,您需要(1)修复您的输入文件或(2)解决您的逻辑错误因此,您并没有试图读取比数组中存在更多的项目。

相关内容

  • 没有找到相关文章

最新更新