码迷,mamicode.com
首页 > Windows程序 > 详细

C#中的各种泛型

时间:2015-05-09 17:36:38      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:c#中的各种泛型

上一篇文章简单了解了一下强类型以及泛型的知识。其实,在.net类库中有很多的泛型定义,最典型也是我们用的最多的就是List<>和Dictionary<Tkey,Tvalue>两个泛型集合。这只是微软我们提供的,在实际开发中,我们很多时候还需要自己定义一些泛型,今天就接着上次的内容来具体学习一下泛型的各种定义。

一、泛型类

1.定义

    //泛型类,泛型的好处,还是代码重用。
    // where yzk : struct泛型约束
    //where T : struct表示只能是值类型
    public class MyClass<yzk, sk, jk, nrg, yhb>
        where yzk : struct //限定yzk只能是值类型
        where sk : class, IComparable //限定sk只能是引用类型
        where jk : ICollection, new()   //表示jk必须是实现了ICollection接口的类型
        where yhb : nrg
    {
        public yzk[] _data;

        public sk _ss;

        public jk _jj;

        public MyClass(params yzk[] objs)
        {
            this._data = objs;
        }

        public void SayHi(yzk msg)
        {
            Console.WriteLine(msg);
        }

        public void Show()
        {
            foreach (var item in _data)
            {
                Console.WriteLine(item);
            }
        }
    }
2.泛型类的实例化
        static void Main(string[] args)
        {
            MyClass<string> mc = new MyClass<string>("aaa", "bbbb", "ccc");
            mc.SayHi("大家好。");
            MyClass<int> mcc = new MyClass<int>(1, 2, 3, 4);
            mcc.Show();
            Console.ReadKey();
        }

二、泛型接口

1.定义

    public interface IFlyable<T>
    {
        void Fly(T msg);
    }
2.接口的继承

类实现接口的时候有两种情况:该类是普通的类、该类也是泛型类

普通类

    public class MyClass : IFlyable<string>
    {

        #region IFlyable<string> 成员

        public void Fly(string msg)
        {
            throw new NotImplementedException();
        }

        #endregion
    }

    public class MyClass1 : IFlyable<int>
    {

        #region IFlyable<int> 成员

        public void Fly(int msg)
        {
            throw new NotImplementedException();
        }

        #endregion
    }

泛型类

    public class MyClass2<yzk> : IFlyable<yzk>
    {

        #region IFlyable<T> 成员

        public void Fly(yzk msg)
        {
            throw new NotImplementedException();
        }

        #endregion
    }

三、泛型方法

        public void SayHi<T>(T msg)
        {
            Console.WriteLine(msg);
        }

注意:对于泛型方法,调用的时候,可以指定泛型,也可以不指定泛型,可以自动推断。

            //mc.SayHi<int>(100);
            // mc.SayHi<string>("aaaaaaaaaaaaaaaa");
            //mc.SayHi(1000);

四、泛型委托

public delegate void Notice<T>(T name);

C#中的各种泛型

标签:c#中的各种泛型

原文地址:http://blog.csdn.net/ydm19891101/article/details/45601965

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!