博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
泛型的优点
阅读量:4553 次
发布时间:2019-06-08

本文共 932 字,大约阅读时间需要 3 分钟。

1、性能

  对值类型使用非泛型集合类,在把值类型转换为引用类型,和把引用类型转换为值类型时,需要进行装箱和拆箱操作。装箱和拆箱的操作很容易实现,但是性能损失较大。假如使用泛型,就可以避免装箱和拆箱操作。

1 ArrayList list=new ArrayList();2 list.Add(20);    //装箱,list存放的是object类型元素,须将值类型转化为引用类型3 int i=(int)list[0];     //拆箱,list[0]的类型是object,要赋值就得把引用类型转化为值类型

  如果换成泛型编程,就不会有装箱和拆箱的性能损失。

1 List
list=new List
();2 list.Add(20); //因为指定了用int来实例化,因此不必装箱3 int i=list[0]; //同样地,访问时也不需要拆箱

2、类型安全

  与ArrayList类一样,如果使用对象,可以在这个集合中添加任意类型。

如果使用非泛型编程,如下代码,就有可能在某些情况下会发生异常。

1 ArrayList list=new ArrayList();2 list.Add(20);3 list.Add("string");4 list.Add(new MyClass());5 6  foreach(int i in list)7 {8        Console.WriteLine(i);    //这里会有个异常,因为并不是集合中的所有元素都可以转化为int9  }

  如果该用泛型编程,则可以避免这种异常,让编译器检查出错误。

1 List
list=new List
();2 list.Add(20);3 lsit.Add(”string”); //编译时报错,只能报整数类型添加到集合中4 list.Add(new MyClass()); //同上

转载于:https://www.cnblogs.com/blueGao/p/10220753.html

你可能感兴趣的文章
Different timers in .net
查看>>
EM算法
查看>>
WebService开发实例
查看>>
小代学Spring Boot之自定义Starter
查看>>
linux新内核的时钟机制代码
查看>>
Swift - 代码创建单例
查看>>
vue 生命周期详解
查看>>
UCSC下载ENCODE数据
查看>>
IOS7 UI Transition Guide 状态栏 statusbar
查看>>
2019 B类
查看>>
Difference Among Mercedes Star Diagnostic Tool MB Star C3 C4 C5 C6
查看>>
Java设计模式之工厂模式
查看>>
Kendo DataSource 概述
查看>>
【leetcode 简单】第三十九题 Excel表列名称
查看>>
【leetcode 简单】 第七十一题 二叉树的所有路径
查看>>
css的背景和边框
查看>>
javaweb之--html/CSS基础小结
查看>>
开发常用工具类-持续更新中
查看>>
实例:网站首页导航栏
查看>>
css3内处理
查看>>