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)

            {

            }

  • 相关阅读:
    匿名方法
    优化从 App.config 读取配置文件
    显示(explicit )与隐式(implicit)转换操作符
    ( 转 ) 聊一聊C#的Equals()和GetHashCode()方法
    协变和逆变
    html frameset的介绍
    html <frame>标签使用
    html <table>标签信息
    html 列表相关信息
    html <form>相关表单
  • 原文地址:https://www.cnblogs.com/hbb0b0/p/1569850.html
Copyright © 2011-2022 走看看