C#基础知识 简单说明泛型的优点

有关泛型的优缺点在网上有很多篇文章,也足以说明问题,我就不去复制粘贴了(而且内容有些多),由于记性不太好,所以自己做个简单明了的总结。

泛型的优点主要有两个:

  • “性能”
  • “安全”

性能从何谈起?很简单,看个粟子。

            //装箱与拆箱操作很容易使用,但是对性能的损失较大,尤其是遍历许多项时非泛型
            var list = new ArrayList();
            list.Add(4); //boxing 装箱操作
            int i1 = (int)list[0];//unboxing- convert a reference to a value type 拆箱操作
            foreach (int i2 in list)
            {
                Console.WriteLine(i2);//unboxing 拆箱操作
            }

            //泛型
            var list = new List<int>();
            list.Add(4);//no boxing 不需要装箱操作,因为value的type在List<int>中已经指定。
            int i1 = list[0];//不需要再使用(int)进行拆箱操作。
            foreach (int i2 in list)
            {
                Console.WriteLine(i2);//不再需要拆箱操作。
            }

安全性,指的是类型安全

            //非泛型
            var list = new ArrayList();
            list.Add(44);
            list.Add("String");
            list.Add(new Class());
            //没有指定类型的情况下,集合中可以添加任意的类型,添加时不会有异常,但是在遍历时会引发异常
            //泛型
            var list = new List<int>();
            list.Add(44);
            list.Add("String"); //compile time error
时间: 2024-11-12 00:21:14

C#基础知识 简单说明泛型的优点的相关文章

C#基础知识简单梳理

C#基础知识简单梳理 本文是转发博友的总结,方便自己以后随时温习: 1.值类型和引用类型 1.1堆和栈 简单的说值类型存放在堆栈上面,引用类型的数据存放在托管堆上面(它的引用地址却存放在堆栈上面)! 栈:它是一个内存数组,是一个先进后出的数据结构! 栈的特征:数据只能从栈顶进,从栈顶出! 堆:它是一个内存区域,可以分配大块区域存储某类型的数据,与栈不同的是它里面的数据可以任意排序和移除! 下面是园子的一张图,贴上来供大家参考啊! 问     题 值  类  型 引 用 类 型 这个类型分配在哪里

[转] C#基础知识简单梳理

原文: http://www.cnblogs.com/zhouzhou-aspnet/articles/2591596.html 感谢原作者 1.值类型和引用类型 1.1堆和栈 简单的说值类型存放在堆栈上面,引用类型的数据存放在托管堆上面(它的引用地址却存放在堆栈上面)! 栈:它是一个内存数组,是一个先进后出的数据结构! 栈的特征:数据只能从栈顶进,从栈顶出! 堆:它是一个内存区域,可以分配大块区域存储某类型的数据,与栈不同的是它里面的数据可以任意排序和移除! 下面是园子的一张图,贴上来供大家参

python基础知识---简单语法

1.if语句 >> a = 10>> b = 20>> if(a>b):print("a max!")else:print("b max!") b max! >> student = "zhangxiaoyu">> if (student == "zhanxgiaoyu"):print("YES")else:print("NO&qu

【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识

第38章      TFTP简单文件传输基础知识 本章节为大家讲解TFTP(Trivial File Transfer Protocol,简单文件传输协议)的基础知识,方便后面章节的实战操作. (本章的知识点主要整理自网络) 38.1  初学者重要提示 38.2  TFTP基础知识参考资料 38.3  TFTP基础知识点 38.4  总结 38.1  初学者重要提示 TFTP简单文件传输协议在实际项目中有比较重要的实用价值,需要初学者对TFTP的基础知识也有个认识. 38.2  TFTP基础知识

黑马程序员——集合基础知识(泛型)

集合:泛型基础知识 泛型.(泛型就是类型参数化,默认的时object,虽然不用强制类型转换,这个就要你自己去写特性方法,比如compareto是string的特有方法吧,你可以写但是父类肯定调用不了) itnex t对象都是obj要使用对象的特性功能必须强.编译的时候没问题,因为都不知道你会传什么对象,你橙子也可以当作apple来传,设计的时候并不知道! 泛型作用.1.用于解决安全问题.运行时期出现的问题classcastexception转移到编译时期.2.迭代器里面的itnext()不用强转

python知识简单总结 - 语言基础 (一)

语言基础 基础知识 pycharm快捷键 快速复制 光标定位到某行或者选中很多行 crtl/command + d 注释 光标定位到某行或者选中很多行 crtl/command + / 删除(剪切) 光标定位到某行或者选中很多行 crtl/command + d pycharm 简单设置 python模版文件设置 command + , -> Editor -> Code Style -> File and Code Templaates -> Python Script 解释器修

Linux-dns基础知识和BIND的简单配置-2(正向解析和反向解析)

DNS服务器基本配置 bind详解:包名:bind进程:named协议:dns使用端口:53(tcp,udp)相关包:bind-chroot:将named进程的活动范围限定在chroot目录,保证安全性.bind-devel:与开发相关的头文件和库文件(编译安装bind时所需)bind-libs:bind服务器端和客户端都使用到的公共库文件bind-utils : bind客户端工具程序文件:/usr/sbin/namedbind权限相关:安装完named会自动创建用户named系统用户,nam

linux入门基础知识及简单命令介绍

linux入门基础知识介绍 1.计算机硬件组成介绍 计算机主要由cpu(运算器.控制器),内存,I/O,外部存储等构成. cpu主要是用来对二进制数据进行运算操作,它从内存中取出数据,然后进行相应的运算操作.不能从硬盘中直接取数据. 内存从外部存储中取出数据供cpu运存.内存的最小单位是字节(byte) 备注:由于32的cpu逻辑寻址能力最大为32内存单元.因此32位cpu可以访问的最大内存空间为:4GB,算法如下: 2^32=2^10*2^10*2^10*2^2 =1024*1024*1024

C#基础知识之泛型

泛型在c#中有很重要的位置,对于写出高可读性,高性能的代码有着关键的作用. 其实官方文档说明的很详细,我这边算是做个记录吧 一.什么是泛型? 泛型是 2.0 版 C# 语言和公共语言运行库 (CLR) 中的一个非常重要的新功能. 泛型(Generic) 允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候.换句话说,泛型允许您编写一个可以与任何数据类型一起工作的类或方法.您可以通过数据类型的替代参数编写类或方法的规范.当编译器遇到类的构造函数或方法的函数调用时,它会生