装箱拆箱原理Demo
来源:互联网 发布:麻婆豆腐 日本 知乎 编辑:程序博客网 时间:2024/06/08 04:24
class demo
{
static void Main(string[] args)
{
int temp=3;
Object obj=temp;//装箱:值类型转换为引用类型(隐式转换)
System.Object obj=3; // 拆箱:引用类型转换为值类型。显式转换。
int i=(int)obj; //强制转换。只有被装过箱的对象才能拆箱。
System.Console.WriteLine(i);
}
//装箱拆箱操作虽然满足了两只类型的转换,但从过程中可以看到,每次装箱都要在堆中new一个对象,大批量的数据装箱拆箱会大大降低效率。
}
class Demo
{
static void Main(string[] args)
{
int a=3; //Int32就是一个类。
Show(a);//自动完成装箱动作操作。
}
static void Show(System.Object obj) //对象类型的参数,传入值类型的实际参数。会默认进行装箱操作。
{
System.Console.WriteLine("hello");
}
}*/
class Demo
{
static void Main(string[] args)
{
int a=3;
Show(a); //Show(null); //空指针异常。nullreferenceException,表明obj参数没有引用。
}
static void Show(System.Object obj) //把子类对象作为实际参数,传给父类对象类型的形式参数,无法实现子类特有功能,所以必须拆箱,转换为子类对象,再操作。
{
int i=(int)obj;
System.Console.WriteLine(i);
}
}
/*
装箱的过程:1.首先分配堆内存,在堆内存中开辟一块儿空间。2.把值类型的实际值复制到新分配内存中。3.新内存返回地址值,赋值给引用的变量。
拆箱的过程:
1.首先检查对象的实例,确保是已经被装箱过的值类型。2.将这个值从实例复制到值类型的变量中。3.栈内存的变量接收复制过来的值。
*/
{
static void Main(string[] args)
{
int temp=3;
Object obj=temp;//装箱:值类型转换为引用类型(隐式转换)
System.Object obj=3; // 拆箱:引用类型转换为值类型。显式转换。
int i=(int)obj; //强制转换。只有被装过箱的对象才能拆箱。
System.Console.WriteLine(i);
}
//装箱拆箱操作虽然满足了两只类型的转换,但从过程中可以看到,每次装箱都要在堆中new一个对象,大批量的数据装箱拆箱会大大降低效率。
}
class Demo
{
static void Main(string[] args)
{
int a=3; //Int32就是一个类。
Show(a);//自动完成装箱动作操作。
}
static void Show(System.Object obj) //对象类型的参数,传入值类型的实际参数。会默认进行装箱操作。
{
System.Console.WriteLine("hello");
}
}*/
class Demo
{
static void Main(string[] args)
{
int a=3;
Show(a); //Show(null); //空指针异常。nullreferenceException,表明obj参数没有引用。
}
static void Show(System.Object obj) //把子类对象作为实际参数,传给父类对象类型的形式参数,无法实现子类特有功能,所以必须拆箱,转换为子类对象,再操作。
{
int i=(int)obj;
System.Console.WriteLine(i);
}
}
/*
装箱的过程:1.首先分配堆内存,在堆内存中开辟一块儿空间。2.把值类型的实际值复制到新分配内存中。3.新内存返回地址值,赋值给引用的变量。
拆箱的过程:
1.首先检查对象的实例,确保是已经被装箱过的值类型。2.将这个值从实例复制到值类型的变量中。3.栈内存的变量接收复制过来的值。
*/
0 0
- 装箱拆箱原理Demo
- 自动装箱和拆箱原理
- 浅谈.NET中的类型和装箱/拆箱原理
- 自动装箱和拆箱原理简析
- 自动装箱和拆箱原理简析
- 浅谈.NET中的类型和装箱/拆箱原理
- Java 自动装箱与拆箱的实现原理
- C#装箱拆箱
- 装箱和拆箱
- 装箱和拆箱
- 拆箱与装箱
- 装箱拆箱笔记
- 装箱拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱和拆箱
- 装箱与拆箱
- 装箱和拆箱
- sql常见面试题(1)
- BootStrap modal加入拖拽功能
- Tesla C卡跟M卡区别是什么?
- 高性能MySql学习笔记——锁、事务、隔离级别
- skyline添加wms和wmts服务
- 装箱拆箱原理Demo
- ThreadLocal简介
- python安装ez_setup.py 【windows环境】
- mybatis 学习5
- crm常见的六大问题
- Swift项目真机调试报错dyld: Library not loaded: @rpath/libswiftCore.dylib
- iOS 火星坐标相关整理及解决方案汇总(转)
- JS生成时间戳
- Android JNI开发高级篇