• C# 语法特性


       泛型将 类型参数 的概念引入了 .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> 实例所存储类型的占位符。

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

  • 相关阅读:
    toString
    React系列,jsx
    React系列,初识
    如何在数据库中存储一棵树
    Linux-gate.so技术细节
    主引导记录MBR/硬盘分区表DPT/主分区、扩展分区和逻辑分区/电脑启动过程
    8259A工作原理描述
    汇编指令大全
    汇编条件判断整理(JCC,CMP/TEST的实现)
    【汇编】字符串处理指令 stosb、lodsb、movsw、scasb、rep
  • 原文地址:https://www.cnblogs.com/zhangchaoran/p/8677724.html
Copyright © 2020-2023  润新知