有关泛型的一些问题..

public class A<T>
    {
            public void BubbleSort(T[] array)
            {
                
                int length = array.Length;

                for (int i = 0; i <= length - 1; i++)
                {
                    for (int j = 0; j<length-1-i; j++)
                    {
                        if (array[j]>array[j])
                        {
                            T temp = array[j];
                            array[j] = array[j - 1];
                            array[j - 1] = temp;
                        }
                    }
                }
            }
        
    }

编译时,在判断if (array[j]>array[j])这里会报错

“错误    1    运算符“>”无法应用于“T”和“T”类型的操作数”

貌似只在.net framework4和4.5里..这样写才不行..请教下大家为什么会这样?

我该如何改..

MMMHUHU
浏览 388回答 8
8回答

汪汪一只猫

这样写肯定不行,array 并不是数组

梵蒂冈之花

array里面的数据显示转换成数字型吧……

ITMISS

同意1楼,这个就不可以用泛型,如果传入一组string的值,你说array[j]>array[j]倒底是谁大?

鸿蒙传说

你这么说是没错.. 现在这里暂时不考虑传入的是string 但是要比较int 或 double 难道我每个类型都要写一次吗?

SMILET

限定T要实现IComparable接口,然后用接口的方法比较大小

慕仙森

array是未知类型..不能这样比较..要进行转换
打开App,查看更多内容
随时随地看视频慕课网APP