C#拆箱和装箱(栈内存和堆内存的关系)

namespace _02_装箱拆箱
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 数据类型分为两大块
            // 1. 值类型数据
            // 2. 引用类型数据
            // 通过类创建的对象属于引用类型数据

            // 值类型数据转化为引用数据类型 就是装箱
            // 引用数据类型转化为值类型 就是拆箱
            object obj = 1;// 装箱
            //object obj2 = new Person();// 拆箱
            if ( obj is int  )
            {
                int a = (int)obj; // 拆箱
            }
            // 装箱就是将栈中的数据转移到堆中,拆箱就是将堆中的数据转移到栈中。
            // 装箱和拆箱需要操作内存 故而比较浪费性能
            // 建议尽量避免使用装箱和拆箱操作


            // 有一个数组 要存储 数字、字符串、布尔值、字符 这个数组应该是什么类型?
            object[] o = {1, "hello", true, 'c' };
            for (int i = 0; i < o.Length; i++)
            {
                object item = o[i];
                if (item is int)
                {
                    int num = (int)item;
                    Console.WriteLine(num);
                }
                else if (item is string)
                {
                    string str = (string)item;
                    Console.WriteLine(str);
                }
                else if (item is bool)
                {
                    bool b = (bool)item;
                    Console.WriteLine(b);
                }
                else if (item is char)
                {
                    char c = (char)item;
                    Console.WriteLine(c);
                }
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值