我认为C#允许我在我的类上调用sort并且没有指定对它们进行排序的方法,也没有编写比较重载这是奇怪的.当我运行此代码时,会弹出此错误
ListmyClassArray= new List (); //myClassArray.add(...); myClassArray.Sort(); An unhandled exception of type 'System.InvalidOperationException' occurred in mscorlib.dll Additional information: Failed to compare two elements in the array.
为什么C#让我在不知道如何排序时编译这段代码!-编辑-
食典委问为什么会这样做.我在评论中写了一个关于它为什么会这样做的理论.这里有一些示例代码.
class A : IComparable { public int CompareTo(A a) { return 0; } } class C //: IComparable { public int CompareTo(A a) { return 0; } } static void test() { A a = new A(); bool b; C c = new C(); object o = a; IComparable ia = (IComparable)o; b = ia == ia; o = c; IComparable ic = (IComparable)o; b = ic == ic; //uncomment this to get a compile time error //IComparable ic2 = c; return; }
如果在返回之前取消注释该行,则会出现编译时错误.当您在类c中取消注释IComparable时,它将编译并工作.
List