zoukankan      html  css  js  c++  java
  • C#基础语法之泛型

    泛型:一共7个知识点

    1.引入泛型,延迟声明

    2.如何声明和使用泛型

    3.泛型的好处和原理

    4.泛型类,泛型方法,泛型接口,泛型委托

    5.泛型约束

    6.协变,逆变

    7.泛型缓存

    一.为啥会出现泛型,有啥用,啥时候用?

    为什么有泛型?泛型有啥用???

    问:为啥会有泛型?

    答:回到根本上,简单讲就是在.net1.0的时候,不同的参数要做同一件事,要写很多方法。所以微软在2.0的时候就推出了新的语法,泛型。

    有啥用?

    答:出现泛型根本要解决的问题就是,不同的参数,做同一件事的问题

    问:啥时候用?

    答:

    1.当你写了好几个方法,除了参数不同,都是干同一件事的,这时就可以用泛型方法

    2.当你写了好几个类,除了参数不同,类都是干同一个事的,此时就要用泛型类

    3.当你写了好几个接口,除了参数不同,类都是干同一个事的,此时就要用泛型接口

    4.当你写了好几个委托除了参数不同,类都是干同一个事的,此时就要用泛型委托

    二.泛型种类

    .net Framwork2.0第一次推出的一个语法泛型

    泛型只有4类:泛型方法,泛型类,泛型接口,泛型委托 

    泛型的特点,没有写死参数类型,调用的时候才指定类型,就叫【延迟声明】:把参数类型的声明推迟到调用

    泛型发方法解决的问题,用一个方法,满足不同的参数类型;做相同的事

    三.
    -泛型约束
    泛型约束--基类约束(不能是sealed):
    1)可以调用基类的一切属性方法---权利
    2)可以强制保证T基类或者基类的子类--义务

    四.
    1>.Net4.0出现的,本质上就是解决list<父类>=list<子类>之间相互转换的问题,因为之前只是理论上说的通,编译器会报错的,协变和逆变的出现就是为了解决它。
    2>协变和逆变只能放在接口或者委托的泛型参数前面
    3>out 协变修饰返回值 , in 逆变 修饰传入参数
    4>协变描述:list<父类>=list<子类>
    5>逆变描述:list<子类>=list<父类>

    五.
    -泛型缓存
    1>简单的描述就是,每个泛型类,都会生成一个副本(就算里面有静态字段,静态方法,这些静态也会生成一个新的副本)
    2>泛型缓存是不会释放的
    3>泛型缓存效率高,比字典高多了

    插入语法知识:

    装箱和拆箱

    每一个线程都有运行【栈】,栈里面的东西等线程运行结束的时候,需要释放的,栈里面存放值类型,【堆】里面存放引用类型是对象共享的。

  • 相关阅读:
    递归
    数据结构与算法-复杂度分析
    'latin-1' codec can't encode characters in position解决字符问题
    redis理解
    spring 嵌套事务问题
    Parameterized testing with any Python test framework
    分布式事务测试考虑点
    python orm / 表与model相互转换
    Python多线程、多进程
    JS运动
  • 原文地址:https://www.cnblogs.com/dfcq/p/15574366.html
Copyright © 2011-2022 走看看