zoukankan      html  css  js  c++  java
  • 泛型

    泛型实现了一种将类型抽象化的通用处理方式。泛型本质上就是一种代码重用。泛型类与非泛型类的主要区别是类型参数化。

    约束是指在定义泛型类时,对于能够用于实例化类型参数的类型所做的限制;约束是通过where子句来实现的,多个约束之间以逗号隔开。

    如果实现一个object类不支持的任何方法,则需要对类型参数实现约束。具体为:

    class MyArray<T> where T:dd,new()

    {

       

    }

    该方法主要为MyArray添加了约束dd和new(),意指MyArray只能管理dd类型及其派生类型对象,同时必须实现一个公共的无参的构造函数。

    约束的主要包括:构造器约束、值类型约束、引用类型约束、基类约束、接口约束、和裸类型约束,具体为:

    1.T:new(),表示类型参数必须具有公共无参数构造函数,有多个约束存在时,必须将new()约束置于最后;

    2.T:struct,表示类型参数必须是值类型。

    3.T:class,表示类型参数必须是引用类型。class和struct不能同时指定。

    4.T:基类名,表示类型参数必须是基类及其派生类型,例如:T:dd。不能既指定约束基类,又指定calss.

    5.T:接口名,表示类型参数必须是指定的接口或是实现了该接口的接口,可以同时定义多个约束;例如:

        public class List<T>:IList<T>,ICollection<T>

    泛型方法的重载:

     public class Test<T, V>        

       {            

           public T add(T a, V b)      //第一个方法

             {    

                 return a;     

            }

             public T add(V a, T b)    //第二个方法

             {            

                return b;       

             }

             public int add(int a, int b)  //第三个方法

                {            

                 return a + b;         

               }    

            }

         很明显,上面Test类中的第三个具有相同的方法名,如果同时传入  Test<int, int>,三个方法都会匹配,但是泛型会优先匹配非泛型方法,所以他会自动匹配到第三个方法;如果将第三个方法进行屏蔽,则会报错,提示方法和属性之间调用不明确。

              Test<int, int> node = new Test<int, int>();   

                   object x = node.add(2,11);

         如果传入的参数如下所示,它会编译通过,因为传入的参数类型不一致,它可以找到唯一匹配的方法;

              Test<int, string> node1 = new Test<int, string>();    

                 object x1 = node1.add(2, "11");

      综上所述:可以看出,当非泛型方法和泛型方法重载时,它会优先匹配非泛型方法。

  • 相关阅读:
    WRF WPS预处理
    CVS安装
    Linux窗口最小化消失,任务栏上无法找到的解决方法
    NCARG安装配置出现error while loading shared libraries: libg2c.so.0问题额解决办法
    Netcdf安装
    Embedding R-generated Interactive HTML pages in MS PowerPoint(转)
    The leaflet package for online mapping in R(转)
    Some 3D Graphics (rgl) for Classification with Splines and Logistic Regression (from The Elements of Statistical Learning)(转)
    What does a Bayes factor feel like?(转)
    Weka算法介绍
  • 原文地址:https://www.cnblogs.com/xiaolifeidao/p/3817741.html
Copyright © 2011-2022 走看看