查看: 1428|回复: 1
打印 上一主题 下一主题

[其他] 对泛型设为值类型和引用类型的理解

[复制链接]

2317

主题

54

听众

2万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
20645
精华
62

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2014-11-29 04:46:35 |只看该作者 |倒序浏览

        为什么要思考泛型设为值类型和引用类型的区别?
        有以下两点原因:
        1.值类型和引用类型在相互转换时,会进行装箱和拆箱操作,会损耗效率。
        2.直接使用泛型进行大小等于比较时,由于值类型和引用类型不能比较,所以不能直接判定;
        所以鉴于以上两点,做了深入的思考和学习。

        什么是装箱和拆箱?
        装箱拆箱只是在值类型与引用类型相互转换时才会发生。
        值类型 转 引用类型叫 装箱。
        引用类型 转 值类型叫 拆箱。
        两种类型的内存处理机制是不同的,因此不能直接相互使用。

        使用泛型可以在一定程度上避免装箱和拆箱引起的效率消耗
        泛型能保障类型安全型,要么是值类型,要么是引用类型,不会出现类型混乱情况
        泛型在使用一些共有方法时,多态特性会自动区分值类型和引用类型进行不同的处理


        泛型比较时不能直接使用==、>、<等运算符,除非重载。
        == 可使用Equals替代
        > 和 < 只有实现IComparable接口的CompareTo方法 或 自己通过其它方式重写比较方法(有更好的方法大家一定要提出来)

分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

hyui    

1

主题

2

听众

6671

积分

高级设计师

Rank: 6Rank: 6

纳金币
2715
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

沙发
发表于 2014-11-29 05:27:35 |只看该作者
good interesting stuff !
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-16 15:53 , Processed in 1.361908 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部