zoukankan      html  css  js  c++  java
  • 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> 实例所存储类型的占位符。

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

  • 相关阅读:
    一个完整的移动端项目的构建步骤——框架搭构1
    简单日历,纯js
    javascript语句语义大全(7)
    微软笔试Highway问题解析
    中国电信翼支付2014编程大赛决赛
    海岛问题
    大数计算
    Dijkstra算法
    Android测试之Keycode
    字符串解析
  • 原文地址:https://www.cnblogs.com/zhangchaoran/p/8677724.html
Copyright © 2011-2022 走看看