首页 > 代码库 > 泛型2

泛型2

 泛型类、泛型方法,泛型返回,泛型委托、泛型接口

    public class GenericC<T,Sunray>
    {
        public static void Show<X,S,W,Eleven>(X tParameter,S sParameter)
        {

        }
        public delegate void NothingDelegate<S>();
    }

 

泛型类:当我们要用一个类表示多个对象时,要用到泛型类;泛型接口同理
一个类要实现泛型接口:1. 指定接口的泛型类型 2.定义成 泛型类,但是泛型类型要一致

public interface IShow<T>
    {
        void Show(T tParameter);
    }

    public class Child<T>: IShow <T> //IShow<int>
    {
        public void Show(T tParameter)
        {
            throw new NotImplementedException();
        }

        public void Show(int tParameter)   //如果用IShow<int>这种方式,那么实现方法的时候参数也指定成int
        {
            throw new NotImplementedException();
        }
    }

    public class Boy<T>:GenericC <T,int>  //Boy:GenericC<int,int>指定类型
    {

    }

 

泛型约束

 public class Constraintes
    {
        /// <summary>
        ///  约束后,可以在方法里面直接使用该类型的属性和方法
        ///  约束后,只能传递People类型或其子类
        /// 类型约束只能有一个、接口约束可以有多个
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="tParameter"></param>
        public static void Show<T>(T tParameter) where T:People,ISports ,IDisposable ,new()
        {
            Console.WriteLine("{0}   {1}", tParameter.Id, tParameter.Name);
            tParameter.Pingpang();
            tParameter.Dispose();
            T t = new T();
        }

        public static void ShowInterface<T>(T tParameter) where T : ISports,IDisposable 
        {
            tParameter.Pingpang();
        }

        public static T Get<T>()  
            //where T : class//表示引用类型
            //where T: struct //表示值类型//值类型没有统一的默认值
            where T:new() //默认构造函数约束,表示T一定有一个无参数的构造函数
        {
            //return null;
            //return default(T);//default关键字,根据实际类型,返回默认值
            return new T();
        }
    }

 

泛型2