protected void SortInDescendingOrder<T>(ref T[] array)
        {
            for (int i = 1; i < array.Length; ++i)
            {
                T temp = array[i];
                int j = i;
                while ((j > 0) && (array[j - 1] < temp))
                {
                    array[j] = array[j - 1];
                    --j;
                }
                array[j] = temp;
            }
        }
错误 1 运算符“<”无法应用于“T”和“T”类型的操作数这个要如何解决?求赐教!

解决方案 »

  1.   

    没法解决,不知道T是个什么东西,怎么能知道T可以不可以进行 < 运算。只能是提供一个委托,返回一个比较结果。
      

  2.   

    如果我想将T实例化为 int 或 float,该如何修改这段代码?
      

  3.   

    错误原因是无法对一个通用的类进行四则运算,需要
    override operator -
      

  4.   

    System.Convert.ChangeType
    我只想说,你这种范性的用法本身就是错的。
      

  5.   

    int.Parse (array[j - 1].ToString())
      

  6.   

    这个问题很好解决,只要这样写就可以了(如果可能为空,请再判断空值情况):        protected void SortInDescendingOrder<T>(ref T[] array) where T : IComparable
            {
                for (int i = 1; i < array.Length; ++i)
                {
                    T temp = array[i];
                    int j = i;
                    while ((j > 0) && (array[j - 1].CompareTo(temp) < 0))
                    {
                        array[j] = array[j - 1];
                        --j;
                    }
                    array[j] = temp;
                }
            }