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

C# 无法比较数组中的两个元素,c#,arrays,C#,Arrays,您有一个SortedList,但是ToolStripMenuItem没有实现IComparable,因此列表不知道如何对它们进行排序 如果不需要对项目进行排序,则可以使用元组列表或字典,具体取决于您希望执行的操作 如果你想把它们分类,你需要使用。这意味着您必须以某种方式实现该接口。这两种对象类型都实现了IComparable吗?这是排序列表比较要添加到数组中的对象所必须的。请提供异常详细信息。看起来您创建了ToolStripMenuItem的排序列表,但没有提供比较它们的方法,这使得排序很困难。

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

如果不需要对项目进行排序,则可以使用
元组列表
字典
,具体取决于您希望执行的操作


如果你想把它们分类,你需要使用。这意味着您必须以某种方式实现该接口。

这两种对象类型都实现了IComparable吗?这是排序列表比较要添加到数组中的对象所必须的。

请提供异常详细信息。看起来您创建了ToolStripMenuItem的排序列表,但没有提供比较它们的方法,这使得排序很困难。看来我还有很多工作要做。。我之所以使用这种方法,是因为我只是创建了一个函数来实现ToolStripMenuItem的所有单击事件。我获取发件人的资料,然后打开与MenuItem相关的表单。使用
字典
可能是最好的做法。出于某种原因,我必须按索引值获取SortedList的索引。这在目录中是不可能的。(这么想)我不知道什么是可比的=我不知道我将如何处理这些东西。只有关键对象需要实现
IComparable
。问题是,关键是,它不能实现它。@svick yea我在火车上用慢速移动连接匆忙输入。感谢您发布更完整的答案。
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;
}
CommandPrompt, LogScreen /* are */ Form //s
menuCommandPrompt, menuLogScreen /* are */ ToolStripMenuItem //s