.net之泛型

 //灵活使用别名使代码更加精简。
    using ZClass2 = ZClass<Xparameter<string>, string>;

    class XClass {
        //泛型方法
        public static void MethodA<z>(z param)
        {
            Console.Write(param.GetType().ToString());
        }
    }

    class YClass<T> {
        public T MethodA() {
            T t=default(T);
            return t;
        }
    }

    class Xparameter<p>
    {
        public static void MethdB(p data) { }
    }
    class ZClass<z,v>{
    public static void MethdB(z key,v data){}
    }
    class Program
    {
        //泛型:generic 具有参数的类型,参数是捡来类型的占用符,一般类型包括类、借口、和结构。 
        static void Main(string[] args)
        {
            //Xparameter<string>代表一个类。
            //ZClass<Xparameter<string>, string> z = new ZClass<Xparameter<string>, string>();
            ZClass2 z = new ZClass2();
        }
    }

.net之约束: 

1,派生约束:

    class Program
    {

        static void Main(string[] args)
        {
            XClass x = new XClass();
            YClass y = new YClass();
            ZClassz<YClass, XClass> z = new ZClassz<YClass, XClass>();
            //error!
            //ZClassz<XClass, YClass> z = new ZClassz<XClass, YClass>();
        }
    }
    public class XClass{
    }
    public class YClass{
    }
    public class ZClassz<y,v>where v:XClass where  y:YClass{
    }

  (例)节点约束:

2,接口约束:

3,值类型约束:

4,引用类型约束:

原文地址:https://www.cnblogs.com/canbefree/p/3498747.html