装箱和拆箱 (判断两个类型转换是否构成装箱或拆箱,要看它们是否存在继承关系)
来源:互联网 发布:windows sdk 8.1下载 编辑:程序博客网 时间:2024/05/16 19:52
<>
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Collections;namespace 装箱和拆箱{ //在做开发的时候要尽量避免装箱和拆箱。 class Program { //判断一个类型转换是否构成了装箱或者拆箱。有个前提就是:这两个类型是否存在继承的关系。如果存在继承关系则有可能发生装箱或者拆箱。如果不存在继承关系,他们一定不会发生装箱或者拆箱。 static void Main(string[] args) { int x = 5; object o = x; //将值类型转换成引用类型,这是装箱 int y = (int)o; //将引用类型转换成值类型,这是拆箱 ArrayList list = new ArrayList(); for (int i = 0; i < 10000; i++) { //Add(object value) 注意:Add这个方法的参数接收的是一个object类型的数据,根据里氏转换定律。一个地方需要一个父类,那么可以将一个子类给它。因为子类可以隐式的转换成父类。 list.Add(i); //这是一个装箱过程。将一个值类型的i 转换成object类型存放到了list这个泛型集合中了。因为i的值是小于10000的。那么这里将i从0开始到9999 总共将10000个数字存放到了list中。也就意味着 做了10000次的装箱。极大的影响了系统的性能。 } //--------以下这种情况不构成拆箱操作。因为string 与int类型不构成继承关系。 string str = "123"; int a = Convert.ToInt32(str); //将一个引用类型强制转换成一个值类型。 //---------以下情况构成了装箱操作。 int b = 10; IComparable ii = b; //IComparable是一个接口,接口是一个引用类型。而int类型是继承了IComparable接口的。所以将一个值类型的b转换成一个引用类型 ii 那么就构成了装箱了。 } }}
0 0
- 装箱和拆箱 (判断两个类型转换是否构成装箱或拆箱,要看它们是否存在继承关系)
- 3.1.5 类型转换;装箱和拆箱
- 值类型和引用类型的转换(装箱和拆箱)
- 引用类型和值类型(装箱和拆箱)
- 类型的装箱和拆箱
- 值类型的拆箱和装箱
- C# 装箱和拆箱转换
- 装箱和拆箱数据类型转换
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 文件编译
- 80端口被NT kernel & System 占用pid 4
- Android 在OnCreate()中获取控件高度与宽度
- Log4J学习【三十四】错误处理之FallbackErrorHandler
- Spring框架中获得DataSource对象的方法
- 装箱和拆箱 (判断两个类型转换是否构成装箱或拆箱,要看它们是否存在继承关系)
- php 生成 pdf ,dompdf 库使用
- Ubuntu 14.10 中安装 VMware11 Tools
- Log4J学习【三十五】错误处理之FallbackErrorHandler续
- 第三章 internet 总结
- 蓝牙协议
- java io 使用规则
- C# DataTable的詳細用法
- C语言编程中对于函数参数的一些解释?