好吧,我按照许多教程使其工作,但我从未找到解决方案。
我在静态类中有这个功能:
public static bool isDifferent<T>(List<T> list1, List<T> list2) where T : IComparable
{
foreach (T item1 in list1)
{
bool different = false;
foreach (T item2 in list2)
{
if (item2.CompareTo(item1) != 0)
different = true;
else
{
different = false;
break;//fuck yes i will use a break
}
}
if (different)
return true;
}
return false;
}
它适用于int列表 但现在我要比较一个名为room的自定义类的列表。
我的班级声明有他需要的全部:公共课室:IComparable
我添加了CompareTo函数。
public int CompareTo(Room other)
{
if (other == null) return 1;
if (Methods.isDifferent(doors, other.doors))
return 1;
else
return 0;
}
所以,每个房间都有一个走廊ID列表,这是我需要比较的唯一值。
我遵循了许多教程,它们似乎与我的结构相同。
答案 0 :(得分:1)
根据您的提问,我可以推断您实施了IComparable&lt; Room &gt;这个界面。
但是,此接口 IComparable&lt; T&gt; 不能分配给 IComparable 。
实施 IComparable ,声明方法&#34; public int CompareTo( object other)&#34;。
答案 1 :(得分:1)
您的问题是Room
实现了IComparable<Room>
,它与IComparable
的界面不同。您应该将您的方法更新为:
public static bool isDifferent<T>(List<T> list1, List<T> list2) where T : IComparable<T>