(菜鸟的笔记)Unity装拆箱和显隐转换

C#篇

简述ArrayList和List的主要区别:

         ArrayList就是一个List<Object>而已,泛型集合的优势就是类型安全,无装箱操作;

简述装拆箱:

        这里必要掌握的 Value Type(值类型) 和 ReferenceType(引用类型);

        装箱:值类型转换为引用类型实例,执行装箱的操作不可避免要在堆上申请内存空间,并将堆栈上的值类型数据复制到申请的堆内存空间上。

        装箱的机制: 1在堆中开辟内存空间  2 把a的值赋值到堆中 3 把堆中的地址给obj

        拆箱:引用类型转换为值类型实例

        拆箱的机制: 1 判断类型是否一致 2 把obj在堆中的值的地址给b

总结: 装箱和拆箱都要消耗内存和CPU资源,效率降低,尽量避免使用

          可通过泛型避免。

类型转换:

        类型转换分隐式转换和显式转换:

        隐式转换:隐式转换是C#默认的以安全的方式进行转换,不会导致数据丢失,比如从int转换为double 从派生类转换为基类,这里数值的精度也不会丢失.

        显式转换:显示转换,就是强制的数据类型转换.限制转换需要强制转换运算符,看到强制转换字如其形会造成数据精度的丢失,比如double d = 10.5; int i = (int)d; 输出的结果d=10;这里数据的精度就丢失掉了。

        注意:

        显式转换可能会导致错误。进行闲置转换时编译器将对转换进行溢出检测,如果溢出说明转换失败,就说明原类型不是一个合法的目标类型。无法进行类型转换。

        强制类型转换会造成数据丢失。

        也可以通过方法进行类型转换:(例)↓

        1.ToString()。所有类型都继承Object所以都有ToString()方法,转化成字符串。

        2.int.Parse()。只支持string类型,首先注意这里string的值不能为null                          

                                其次就是只能是整型不能是浮点型 报错:格式不正确

        3.int.TryParse() 可以看出int.Parse()方法名前加Try.意思是它会尝试进行转换,如果类型不正确不会报错,它会返回0,这个在C#测试下就好。

        4. Convert类 这个类里有许多转换的方法。这里注意我们生活中4舍5入,在C#里它是会优选进位或者退位偶数的结果。例如:4.5:4       5.5:6

        5 实现类的转换,通过接口 IConventible 或者 TypeConventer。实现接口的成员方法。从而达到类型转换。

        6 使用as操作符转换 但是as只能用于引用类型和可为空的类型。使用as有很多好处,当无法进行类型转换时会将对象赋值为Null,避免类型转换时报错或者出异常。C#抛出异常在进行补货一场并进行处理是很消耗资源,如果只是将对象付志伟Nul的话几乎不消耗资源也可以说消耗资源很小。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值