C#基础-装拆箱

 类型分为值类型(存在声明的地方)和引用类型存储位置堆区。在运行过程中经常会遇到 变量在 值类型与引用类型之间的转换。

目录

常用数据类型:

默认值:

装箱:

拆箱:


常用数据类型:

值类型:基本数据类型(int、double、float、bool等);枚举(可自定义) enum ;结构体(可自定义) struct

引用类型:类(可自定义)class;容器 array、List、Dictionary等;字符串 string;委托 delegate等

默认值:

        值类型:整形默认值为0;浮点型默认值为 0.0;bool 默认值为 false ;枚举默认值从0开始;

        引用类型:默认值为null;意为在堆内存上没有地址指引 没有分配内存;

装拆箱指的是将一个值从栈区拿出创建堆区对象存储,或将堆区内存对象值移动到栈区存储的过程,在过程中将该值进行内存位置移动。

装箱:

        将一个int类型的值 通过tostring 或Convert 进行类型转换,将int 转为了string。在转换过程中,在堆上分配了内存 存储一个字符串的类型对象,该对象内包含某值的字符串。将值类型的值  从栈区到堆区上创建引用类型对象的 这一操作称为装箱。

如代码所示:

namespace ConsoleApp4
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int id = 10;//值类型 int
            Console.WriteLine(id.GetType());

            string idStr = id.ToString();
            Console.WriteLine(idStr.GetType());//输出 System.String

            string idStr2 = Convert.ToString(id);
            Console.WriteLine(idStr2.GetType());//输出 System.String
        }
    }
}

拆箱:

        将一个引用类型对象的值,包含创建进一个值类型对象中,该值的内存地址由堆区移动到了栈区,称为拆箱。

如代码所示:将一个值为10的字符串引用类型转为int值类型存储在栈区。

namespace ConsoleApp4
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string tId = "10";
            Console.WriteLine(tId);

            int tId2 = Convert.ToInt32(tId);
            Console.WriteLine(tId2);
        }
    }
}

在装拆箱的过程中,一个值在内存上被来回的转移分配存储,是一种内存操作,在编码中要尽量避免装拆箱的操作,避免内存来回分配到来的消耗。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值