• 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)

            {

            }

  • 相关阅读:
    简要集群复制shell脚本
    git命令
    gitlab部署
    QPS、TPS、并发用户数、吞吐量关系
    Windows admin center
    ftp命令行工具
    ftp ftps sftp
    部署 Nethogs
    smtp imap
    如何在【博客园】通过搜索 博主 昵称 来找到博主?
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1569850.html
Copyright © 2020-2023  润新知