• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
成为自己最想成为的那种人
博客园    首页    新随笔    联系   管理    订阅  订阅
C# 语法特性 - 泛型(C#2.0)

   泛型将 类型参数 的概念引入了 .NET Framework。

泛型主要有两个优点:

   1、编译时可以保证类型安全。

   2、不用做类型转换,获得一定的性能提升。

泛型方法、泛型委托、泛型接口

   除了泛型类之外,还有泛型方法、泛型委托、泛型接口:

  泛型委托:

        //泛型委托
        public delegate void Del<T>(T item);        //声明一个泛型委托
        public static void Notify(int i) { }        //定义一个方法
        Del<int> m1 = new Del<int>(Notify);         //用委托代替定义的方法

  泛型接口:

      //泛型接口
      interface MyInteface<T1, T2, T3>
      {
          T1 Method1(T2 param1, T3 param2);
      }

      public class MyClass<T1, T2, T3> : MyInteface<T1,T2,T3>
      {
          public T1 Method1(T2 param1, T3 param2)
          {
              throw new NotImplementedException();
          }
      }

  泛型方法:

        //泛型方法
        public void Swap<T>(ref T t1, ref T t2)
        {
            T temp = t1;
            t1 = t2;
            t2 = temp;
        }
        public void Interactive()
        {
            string str1 = "a";
            string str2 = "b";
            Swap<string>(ref str1, ref str2);
            Console.WriteLine(str1 + "," + str2);
        }

泛型约束:

   可以给泛型的类型参数上加约束,要求这些类型参数满足一定的条件:

约束 说明
 where T : struct  类型参数需是值类型
 where T : class  类型参数需是引用类型
 where T : new()  类型参数要有一个 public 的无参构造函数
 where T : <base class name>  类型参数要派生自某个基类
 where T : <interface name>  类型参数要实现某个接口
 where T : U  这里 T 和 U 都是类型参数,T 必须是或者派生自 U

 

泛型例子

    public class List<T> { }

    其中,T 就是 System.Collections.Generic.List<T> 实例所存储类型的占位符。

    当定义泛型类的实例时,必须指定这个实例所存储的实例类型。

posted on 2018-03-30 17:55  遇见未来  阅读(368)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3