泛型的简单说明

本文介绍了C#中的泛型概念,包括泛型在定义时的类型不确定性、常用的泛型集合如List和Dictionary,以及泛型方法的实现,如栈的Mystack类。还探讨了泛型约束,如使用where关键字对类型进行限制,以及default关键字的用法。
摘要由CSDN通过智能技术生成

什么是泛型:在定义时不明确类型,但当使用时需要明确类型,并且不能更改

泛型集合:List<T>,Dictionary<TKey, TValue>

泛型方法:把一个方法的返回值类型和参数定义为泛型类型

泛型方法的简单实现demo,下面主要实现了先进后出的栈

   internal class Mystack<T>
    {
        //准备一个数组类型
        private T[] stack;
        //元素的位置
        private int stackPoint;
        //数据的容量
        private int size;

        public Mystack(int size)
        {
            this.size = size;
            this.stack = new T[size];
            this.stackPoint = -1;//入栈的索引从0开始
        }
        //元素入栈
        public void push(T item)
        {
            if (this.stackPoint >= this.size - 1)
            {
                Console.WriteLine("满了");
            }
            else
            {
                stackPoint++;
                stack[stackPoint] = item;
            }
        }
        //元素出栈
        public T pop()
        {
            T data = stack[stackPoint];
            stackPoint--;
            return data;
        }
    }

泛型类的实现,default关键字可以在T1是引用类型时赋值为null,在是值类型时赋值为默认值

    public class MyGenericDemo<T1, T2>
    {
        private T1 data1;
        private T2 data2;

        public MyGenericDemo()
        {
            data1 = default(T1);//default关键字可以在T1是引用类型时赋值为null,在是值类型时赋值为0
            data2 = default(T2);
        }
    }

泛型约束:使用where关键字来实现约束,在不确定数据类型时可使用动态类型Dynamic来使用泛型

  public class MyGenericClass<T1, T2, T3>
        where T1:struct//表示T1只能是值类型
        where T2:class//表示T2只能是引用类型
        where T3 : new()//必须有一个无参数的构造方法,这个约束必须放到最后
    {
        ///summary///
        ///定义属性
        ///summary///
        public List<T1> ProductList { get; set; }
        public T3 Publisher { get; set; }

        public MyGenericClass()
        {
            this.ProductList = new List<T1>();

            Publisher = new T3();
        }
    }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值