gpt4 book ai didi

c# - 无法比较数组中的两个元素

转载 作者:太空狗 更新时间:2023-10-30 00:12:08 24 4
gpt4 key购买 nike

private SortedList<ToolStripMenuItem, Form> forms = new SortedList<ToolStripMenuItem, Form>();                

private void MainForm_Load(object sender, EventArgs e)
{
formsAdd(menuCommandPrompt, new CommandPrompt());
formsAdd(menuLogScreen, new LogScreen()); //Error
}

private void formsAdd(ToolStripMenuItem item, Form form)
{
forms.Add(item, form); //Failed to compare two elements in the array.
form.Tag = this;
form.Owner = this;
}

我不明白为什么它会抛出错误。表单加载事件的第二行发生错误。

formsAdd 方法只是将表单和工具提示元素添加到数组 (forms) 中,并为此设置标签和表单所有者。在第二次调用函数时,它会抛出错误。

CommandPrompt, LogScreen /* are */ Form //s
menuCommandPrompt, menuLogScreen /* are */ ToolStripMenuItem //s

Error

最佳答案

您有一个 SortedList,但是 ToolStripMenuItem 没有实现 IComparable,所以列表不知道如何对它们进行排序。

如果您不需要对项目进行排序,您可以使用 Tuple 列表或 Dictionary,具体取决于您想要做什么.

如果你想让它们排序,你需要使用the overload of SortedLists's constructor that takes IComparer .这意味着您必须以某种方式实现该接口(interface)。

关于c# - 无法比较数组中的两个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7296783/

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