zoukankan      html  css  js  c++  java
  • Generic 方法

    1定义

    泛型方法是使用类型参数声明的方法。

    class Class3

        {

            void Swap<T>(ref T a, ref T b)

            {

                T temp = a;

                a = b;

                b = temp;

            }

     

            /*Generate two error

               1 找不到类型或命名空间名称T(是否缺少 using 指令或程序集引用?)

               2 找不到类型或命名空间名称T(是否缺少 using 指令或程序集引用?)

            void Swap(ref T a,ref T b)

            {

                T temp = a;

                a = b;

                b = temp;

            }

            */

    }

     

    void Swap<T>(ref T a, ref T b)其实就是 void Swap(ref T a, ref T b),但是在非泛型类中写成

    void Swap(ref T a, ref T b)编译通不过,必须把参数T 提到方法名后。在泛型类中void Swap(ref T a, ref T b)编译可以通过。

    l   调用时可以省略方法后的类型参数

     

    int a = 3, b = 5;

                Class3.Swap<int>(ref a, ref b);

     

                string aa="aa",bb="bb";

                Class3.Swap<string>(ref aa,ref bb);

     

                //no error ,compiler can khnow call what

                Class3.Swap(ref a, ref b);

            Class3.Swap(ref aa,ref bb);

    2注意:

    在泛型类中,非泛型方法可以访问类级别类型参数

    泛型方法中也可以使用类型约束

    public static void SwapValueType<T1>(ref T1 a, ref T1 b) where T1 : struct

           {

               T1 temp = a;

               a = b;

               b = temp;

       }

    只针对值类型的数据交换

    l   泛型方法可以使用许多类型参数进行重载。

     public static void SomeOperate<T>(T a)

            {

     

            }

     

            public static void SomeOperate<T, U>(T a, U b)

            {

            }

  • 相关阅读:
    egret-使用URLLoader 设置不同的dataFormat 加载不同的资源
    egret新手指南--自定义组件
    事件的三个阶段
    事件派发,事件机制
    屏幕适配
    断线重连机制
    电影屏幕字从天上掉下来的效果
    使用select2 实现select多选与初始化数据。
    ul高度为0 li高度为0
    php生成json文件,以zip压缩包批量下载。
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1569850.html
Copyright © 2011-2022 走看看