理解C#中装箱和拆箱是什么 有什么用

前言

C# 是一种通用、面向对象的编程语言,由微软(Microsoft)开发的,属于强类型语言,变量需先声明数据类型、然后给变量赋初值,最后才能使用该变量。否者程序直接报错、提示。

一、c#数据类型

在c#中数据类型分为值类型、引用类型。

值类型有:int、double、bool、decimal、enum、struct等,数据存放在栈stack中。
引用类型有:string、数组、自定义类、object、接口等,数据存放在堆heap中,地址存放在栈stack中。

二、什么是装箱、拆箱

简单来说:封箱(boxing)是把值类型数据,转换为引用类型。拆箱(unboxing)是把引用类型数据,转换为值类型。通过装箱和拆箱操作,可以实现值类型与引用类型的互相转换,最终能够实现任何类型的值,可以按照对象进行处理。

程序中发生装箱和拆箱先决条件:

1. 发生类型转换。

2. 存在继承关系。

 

三、产生装箱、拆箱的举例

 

int  a= 1;//定义int型变量

 

object b; //定义object型变量

 

b= a; //将int型转成object型

 

// 根据里氏转换原则,可以把派生类赋值给基类

 

// 这里出现了装箱,额外耗费cpu和内存资源

 

Console.WriteLine("这是装箱,是将值类型,转换为引用类型");

 

a= (int)b; //将object型转成int型

//根据里氏转换原则,当基类中装的是派生类,可以强转

//这里出现了拆箱,额外耗费cpu和内存资源

Console.WriteLine("这是拆箱,是将引用类型,转换为值类型");

 

posted @ 2023-03-06 11:36  竹林幽径  阅读(382)  评论(0编辑  收藏  举报
TOP