C#泛型概念的简介与泛型的使用

2020-01-05 09:47:40刘景俊
  • new() (类型参数必须具有无参数的公共构造函数。当与其他约束一起使用时new() 约束必须最后指定)
  • <接口名称> 类型参数必须是指定的接口或实现指定的接口。可以指定多个接口约束。约束接口也可以是泛型的。
    
    using System;
    namespace _1_3_1泛型Generic
    {
      //利用泛型创建一个类似动态数组的类
      class DyArray<T>
      {
        private T[] arr;   //泛型数组
        public int Lenght;  //数组大小
        
        //构造函数
        public DyArray(int size){
          this.Lenght = size;
          arr = new T[size];
        }
        //向指定位置添加元素
        public void Add(int i,T t)
        {
          if (i < arr.Length && i >= 0)
          {
            arr[i] = t;
          }
          else
          {
            Console.WriteLine("您输入的索引不合理");
          }  
        } 
        //移除指定位置元素
        public void Remove(int i)
        {
          if (i<arr.Length && i>=0)
          {
            arr[i] = default(T);
          }
          else
          {
            Console.WriteLine("您输入的索引不合理");
          }
        }
        /// <summary>
        /// 遍历当前数组元素 
        /// </summary>
        public void Ergodic()
        {
          for (int i = 0; i < arr.Length; i++)
          {
            Console.WriteLine(arr[i]);
          }
        }
      }
      class Program
      {
        static void Main(string[] args)
        {
          DyArray<int> dy = new DyArray<int>(3);
          dy.Add(0, 1);
          dy.Add(1, 11);
          dy.Add(2, 111);
          dy.Add(3, 1111);
          dy.Ergodic();
          DyArray<string> dy2 = new DyArray<string>(5);
          dy2.Add(0, "chen");
          dy2.Add(1, "ya");
          dy2.Ergodic();
          Console.ReadKey();
        }
      }
    }
    

    运行结果:

    C#,泛型

    泛型委托:

    C# 系统自带的两个委托Action,Func就使用了泛型的形式

    
    //利用泛型,定义没有返回值,带参数的委托
        Action<string> method2 = Show;
        method2("CZHENYA");
    //===========================================
    //func 中的泛型是指定的方法的返回值类型,,
        Func<int> method = Show1;
        Console.WriteLine("方法的返回值是:"+ method());