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)

            {

            }

  • 相关阅读:
    Convert Date between LocalDateTime
    Java 8 Date Time API Example Tutorial – LocalDate, Instant, LocalDateTime, Parse and Format
    Enable HTTPS in Spring Boot
    设定范围和步长的递增数验证器Validator
    Codeforces Round #392(div 2) 758D (贪心)
    机器学习:决策树算法(简单尝试)
    Codeforces Round #388 (Div. 2) 749E(巧妙的概率dp思想)
    Codeforces Round #364 (Div. 1) 700B(树)
    Codeforces Round #389 (Div. 2) 752F(树的权值重心)
    Codeforces Round #389 (Div. 2) 752E(二分答案)
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1569850.html
Copyright © 2011-2022 走看看