C# 泛型约束,泛型函数

   class 泛型
    {

        public static void Main()
        {

            //---------------测试泛型约束-------
            //定义一个Pression数组
            Pression[] pr = new Pression[] { new Pression("蚊子",12),
            new Pression("栋冻", 10), new Pression("高高", 20)};
            sort<Pression> ss = new sort<Pression>();//实例化一个排序类
            ss.sortt(pr);//调用排序函数
            foreach (Pression ppr in pr)
            {//打印出排序后的序列
                Console.WriteLine(ppr.ToString());
            }

            //----------测试泛型函数---------
            int a = 5;
            Console.WriteLine("a -->" + a);
            int b = 9;
            Console.WriteLine("b -->" + b + "/n");
            pr[0].Swap<int>(ref a, ref b);
            Console.WriteLine("a-->" + a);
            Console.WriteLine("b-->" + b);

            Console.Read();
        }

    }

    //先来比较一下 一个类,实现了比较接口,这个类有两个字段
    class Pression : IComparable<Pression>
    {
        //这里是泛型函数 交换x 和y
        public void Swap<T>(ref T x, ref T y)
        {
            T tem;
            tem = x;
            x = y;
            y = tem;
        }

        //--------------属性方法、构造函数---------------
        private int year;
        private string name;

        public int Year
        {
            get { return year; }
            set { year = value; }
        }
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public Pression(string _name, int _year)
        {
            this.Name = _name;
            this.Year = _year;
        }
        public Pression() { }
        //-------------------------------------


        //------------实现比较的接口----------
        #region IComparable<Pression> 成员
        int IComparable<Pression>.CompareTo(Pression other)
        {
            return this.Year.CompareTo(other.Year);
        }
        #endregion
        //----------重写了ToString方法---------
        public override string ToString()
        {
            return "姓名:" + this.Name +
                "*********年龄:" + this.Year;
        }
    }

    //----排序的类,要求要排序的对象实现了比较的接口----
    class sort<T> where T : IComparable<T>
    {
        public void sortt(T []t)
        {//这里是一个冒泡排序法
            for (int i = 0; i < t.Length-1; i++)
                for (int j = i+1; j < t.Length; j++)
                {
                    if (t[i].CompareTo(t[j]) == 1)
                    {
                        T tt = t[i];
                        t[i] = t[j];
                        t[j] = tt;
                    }
                }
        }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值