范型概述及特点

本文介绍了C#中的范型,旨在解决Object多态性的性能和安全性问题。范型在IL和CLR层面得到支持,减少boxing和unboxing开销,并确保类型安全。在JIT编译时,对于值类型和引用类型有不同的处理方式。使用范型可以提高代码复用和可靠性,同时避免代码膨胀。文章列举了.NET Framework中的一些范型容器,如Dictionary、List和Stack等。
摘要由CSDN通过智能技术生成

初学范型,有点模模糊糊不太理解,找到一些资料希望和大家一起分享一下: 

范型的设计是为了解决Object的多态性设计中的两个问题:
(1),性能上面的,boxing和unboxing需要大量的复制开销;
(2),安全性上面的,在上面一个例子看到了如果unboxing类型不同会抛出一个InvalidCastException异常; 范型的设计格式是使用<和>封闭其中一个范型参数,例如:public class Stack<T>;
范型的实例化格式是使用需要使用的类型替换<和>封闭其中一个范型参数,例如:
Stack<char> char_Stack = new Stack<char>();
多范型类定义格式,在<和>封闭多个范型参数,例如:class Node<K,T>
在C#2.0中范型是在中间语言(IL)和公共语言运行时(CLR)支持的.对于值类型:会在JIT编译时候替换参数类型,如果存在以及编译特定类型的机器代码,将直接返回这段代码.这样避免了在ISO C++中Template可能带来代码膨胀.
对于引用类型:会直接在JIT编译时候替换参数类型.
理解C# 2.0范型是在实现是基于CLR支持的很重要啊,因为.NET的本质是和语言无关的.任何语言最后都是编译为中间语言,这样基于IL和CLR支持的范型可以运用到所有基于CLR实现的语言.

使用范型的优点:
        程序员只需要编写、测试、部署代码一次,即可以对不同的数据类型重复使用该代码。
        同时&#

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值