万事开头难,今天先从随笔开始,记录工作中平时不太注意到的知识点。今天开始说下泛型。

泛型在我们项目中很是常见,使用很广泛,我觉的它有以下几个优点。

1.安全性。

2.性能。

3.二进制代码的重用。

4.代码的扩展。

下面从代码方面分析下这些优点。

1.安全性。

这段代码只有运行起来的时候才会报错,  秉着错误得先发现的原则,这种写法不合适。

  var text = new ArrayList();
text.Add();
text.Add("mystring");
foreach (int item in text)
{
Console.Write(item);
}

如果换成泛型,试试看。

 var list = new List<int>();
list.Add();
list.Add("mystring");//会编译器会直接报错

2.性能。

同样使用非泛型集合,添加数据,并输出。    可以看出,添加进集合进行了装箱操作,赋值的时候又进行了拆箱操作。一装一拆性能就会影响性能。

  var text = new ArrayList();
text.Add();
int a = (int)text[];

如果换成泛型,试试看。   泛型定义为int,int类型在编译器动态生成的类中使用,不会进行装箱和拆箱的操作。

 var list = new List<int>();
list.Add();
int b = list[];

3.二进制代码的重用。

泛型可以使用多个类型来进行实例化。

 var list = new List<int>();
list.Add();
var str = new List<string>();
str.Add("str");
var Studentclass = new List<Student>();
Studentclass.Add(new Student());

4.代码的拓展。

对不同的类型的泛型,进行实例化的时候,程序编译的时候,如果是引用类型,所有实例化的类都共用同一个本地类相同的实现代码,如果是值类型,会为每个值类型实例化一个新类。

第一次开始记录,有错误的地方,希望大家多多包涵。

C#泛型自己的理解和总结的更多相关文章

  1. Atitit 泛型原理与理解attilax总结

    Atitit 泛型原理与理解attilax总结 1. 泛型历史11.1.1. 由来11.2. 为什么需要泛型,类型安全21.3. 7.泛型的好处22. 泛型的机制编辑22.1.1. 机制32.1.2. ...

  2. C# 泛型的简单理解(安全、集合、方法、约束、继承)

    前言 泛型允许你在编译时实现类型安全.它们允许你创建一个数据结构而不限于一特定的数据类型.然而,当使用该数据结构时,编译器保证它使用的类型与类型安全是相一致的.泛型提供了类型安全,但是没有造成任何性能 ...

  3. C# 泛型的入门理解(来自网络)

    using System.Collections; class Program { //做个比较 static void Main(string[] args) { //new对象 Cls a1 = ...

  4. 泛型< ? extends > <? super> 理解

    public class Test { public static void main(String [] args){ Plate<? extends Fruit> p = new Pl ...

  5. C# 理解泛型

    出处:http://www.tracefact.net/CSharp-Programming/Generics-In-CSharp.aspx 术语表 generics:泛型type-safe:类型安全 ...

  6. C#泛型理解(转)

    [译]C# 理解泛型  PDF 浏览:http://www.tracefact.net/document/generics-in-csharp.pdf源码下载:http://www.tracefact ...

  7. java泛型的理解

    总体介绍泛型: 1.泛型是计算机程序中一种重要的思维方式,它将数据结构和算法与数据类型相分离,使得同一套数据结构和算法,能够应用于各种数据类型,而且还可以保证类型安全,提高可读性.在Java中,泛型广 ...

  8. 【转载】C# 理解泛型

    术语表 generics:泛型type-safe:类型安全collection: 集合compiler:编译器run time:程序运行时object: 对象.NET library:.Net类库va ...

  9. 如何理解 Java 中的 <T extends Comparable<? super T>>

    Java 中类似 <T extends Comparable<? super T>> 这样的类型参数 (Type Parameter) 在 JDK 中或工具类方法中经常能看到. ...

随机推荐

  1. Mysql高手系列 - 第26篇:聊聊如何使用mysql实现分布式锁

    Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 欢迎大家加我微信itsoku一起交流java.算法.数据库相关技术. 这是Mysql系列第26篇. 本篇我们使用my ...

  2. 玩转u8g2 OLED库 MAX7219_32X8点阵模块

    u8g2 OLED库 + MAX7219_32X8点阵模块 理论基础 玩转u8g2 OLED库,一篇就够 玩转u8g2 OLED库,一篇就够(字数太多 要分篇) 实验内容 Full screen bu ...

  3. Arduino学习笔记⑥ 硬件串口通信

    1.前言     Ardunio与计算机通信最常用的方式就是串口通信.在Arduino控制器上,串口都是位于Rx和Tx两个引脚,Arduino的USB口通过一个转换芯片与这两个串口引脚连接.该转换芯片 ...

  4. 百万年薪python之路 -- 字典(dict)

    1.字典(dict)-- dict关键字 字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成. ​ 字典中逗号分隔叫作一个元素 ​ 字典是无序的 ​ key必须是不可变 ...

  5. 基于docker的mysql8的主从复制

    基于docker的mysql8的主从复制 创建mysql的docker镜像 构建docker镜像,其中数据卷配置内容在下面,结构目录如下 version: '3.7' services: db: # ...

  6. 05 python学习笔记-常用内置函数(五)

    1.sorted() 函数对所有可迭代的对象进行排序(默认升序)操作 sort 与 sorted 区别: sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作. l ...

  7. Rest_Framework之认证、权限、频率组件源码剖析

    一:使用RestFramwork,定义一个视图 from rest_framework.viewsets import ModelViewSet class BookView(ModelViewSet ...

  8. Ubuntu16.04下升级Python到3.6

    转: 这里 有一篇帖子是说从源代码开始安装,这种方式原来尝试过,需要删除系统默认的软链命令,感觉比较粗暴,现在在想有没有更好的方式呢? 找到一个帖子:http://ubuntuhandbook.org ...

  9. 2019 年容器生态统计报告发布 | 云原生生态周报 Vol. 26

    作者 | 酒祝.天元.元毅.心水.衷源 业界要闻 1.2019 年容器生态统计报告发布  据报告显示,Kubernetes 占据 77% 的容器编排产品份额,Docker 占据 79% 的容器引擎产品 ...

  10. php从数据库获取数据并遍历在表格中

    <?php /*连接数据库并以一个数组的形式获得数据*/ header("Content-type:text/html;charset=UTF-8"); $con = mys ...