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)

            {

            }

  • 相关阅读:
    [学习记录]Flask会话维护
    [学习记录]MarkDown语法
    [学习记录]jinja2模板语法
    [学习记录]flask资源加载
    [学习记录]flask初步
    [常用操作]使用github桌面版上传代码
    [学习记录]简明扼要的Sass
    接口Mock测试
    12 | 从0到1:你的第一个GUI自动化测试
    navicat导出DDL语句
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1569850.html
Copyright © 2011-2022 走看看