首页 新闻 会员 周边

新手!请问大神 我这个泛型方法有什么问题!

0
[已解决问题] 解决于 2014-09-30 21:35

小弟新学泛型 这是一个泛型的冒泡算法 是网上教程的代码

但是小弟弟一眼感觉这个泛型方法有问题, 然后又继续搜文章,发现连续2篇文章都是代码出错 真心不敢看网上那些转的博客了!  所以还请问大神给解释这种泛型方法如何处理呢?

功能:能让传入的参数 double long int bit 类型都支持排序

 

 

狂扁小朋友的主页 狂扁小朋友 | 初学一级 | 园豆:10
提问于:2014-09-29 22:22
< >
分享
最佳答案
1
class SortHelper<T>
    where T : IComparable<T>//这个更安全
    where T : IComparable //这个兼容性最好
    //可以同时设置两个,也可以只设置其中一个
    //至于是否要struct,这个看你的需求,不使用struct,使得你的方法功能更强大
{
    public static void BubleSort(T[] arr)
    {
        int length = arr.Length;
        for(int i = 0; i < length - 2; i++)
        {
            for(int j = length - 1; j >= 1; j++)
            {
                if(t[j].CompareTo(t[j - 1]) < 0)
                {
                    T temp = arr[j];
                    arr[j] = arr[j - 1];
                    arr[j - 1] = temp;
                }
            }
        }
    }
}
奖励园豆:5
519740105 | 大侠五级 |园豆:5810 | 2014-09-30 10:11

这个方法是错误的 

狂扁小朋友 | 园豆:10 (初学一级) | 2014-10-01 11:52

@狂扁小朋友: 什么方法?compareto?这个具体什么方法,你要看具体情况的,我也只是给你一个参考。

通过VS写代码的智能提示,这些都能轻松解决。

519740105 | 园豆:5810 (大侠五级) | 2014-10-01 12:29
其他回答(2)
0

class SortHelper<T> where T : struct, IComparable 

刘宏玺 | 园豆:14020 (专家六级) | 2014-09-29 23:16

这样不改其他代码的话,应该是不行的。

还需要修改下: if (t[j].CompareTo(t[j - 1]) < 0)

支持(1) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2014-09-30 08:46

@幻天芒: 正解!

支持(0) 反对(0) 刘宏玺 | 园豆:14020 (专家六级) | 2014-09-30 09:12
0

不用吧.继承之后应该是一个运算符重载,不用调用的

吴瑞祥 | 园豆:29449 (高人七级) | 2014-09-30 09:10

这个接口里面没有运算符重载哦。

支持(0) 反对(0) 幻天芒 | 园豆:37175 (高人七级) | 2014-09-30 09:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册