本帖最后由 李栋Jelly 于 2012-11-24 19:40 编辑
CompareTo是怎样进行排序的, 我设置断点看的每次给TheValue赋值都不是按数组顺序依次赋值比较的,而且还有重复的。 求解释CompareTo- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Csharp面向对象_接口IComparable
- {
- //定义一种特定于类型的通用比较方法,值类型或类通过实现此方法对其实例进行排序。
- class MyClass : IComparable
- {
- public int TheValue;
- public int CompareTo(object obj)
- {
- MyClass mc = (MyClass)obj;
- if (this.TheValue < mc.TheValue) return -1;
- if (this.TheValue > mc.TheValue) return 1;
- return 0;
- }
- }
- class Program
- {
- static void PrintOut(string s, MyClass[] mc)
- {
- Console.Write(s);
- foreach (MyClass m in mc)
- {
- Console.Write("\t" + m.TheValue);
- }
- Console.WriteLine(" ");
- }
- static void Main(string[] args)
- {
- int[] myInt = { 20, 4, 16, 9, 2 };
- MyClass[] mcArr = new MyClass[5];
- for (int i = 0; i < 5; i++)
- {
- mcArr[i] = new MyClass();
- mcArr[i].TheValue = myInt[i];
- }
- PrintOut("Initial Order: ", mcArr);
- Array.Sort(mcArr);
- PrintOut("Sorted Order: ", mcArr);
- Console.ReadKey();
- }
- }
- }
复制代码 |