日期:2014-05-17  浏览次数:20821 次

关于IComparable接口的一个问题
namespace IComparable接口
{
    //声明一个接口
    public interface IComparable
    {
        int CompareTo(object obj);
    }

    //声明一个实现接口的类
    class MyClass : IComparable
    { 
    //声明一个公有的字段成员
        public int TheValue;
        //实现接口中方法成员
        public int CompareTo(object obj)
        { 
        //将接口类型的变量的引用强制转换为MyClass类型
            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 (var m in mc)
                Console.Write("{0}", m.TheValue);
            Console.WriteLine("");
        }
        static void Main( )
        {
            //声明并初始化数组
            var myInt = new[] { 20, 4, 16, 9, 2 };
            //创建Myclass对象的数组
            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);
       &