已有56人关注
关于装箱和拆箱的问题
发表在C#图书答疑 2015-04-21
是否精华
版块置顶:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test05
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 2008;
            object obj = i;
            Console.WriteLine("1、i的值为{0},装箱之后的对象为{1}", i, obj);
            i = 927;
            Console.WriteLine("2、i的值为{0},装箱之后的对象为{1}", i, obj);
            Console.ReadLine();

        }
    }
}
书中装箱的定义为将值类转换为引用类。我想问的是,第一次输出。显示都为2008,这个没错。第二步i重新赋值927,这时的i应该是引用类型了吧?但是为何第二次输出结果i显示的是927.而obj还是2008呢?引用类型不是一个变化了就都跟着变化么?为什么job这个引用类型没有变化?
分享到:
精彩评论 1
小科_mrkj
学分:43 LV2
2015-04-21
沙发
读者朋友:
     您好,object是.NET预定义的一个引用类型,它是一种特殊的引用类型,在对object类型的对象赋值时,相当于是在内存里面又重新生成了一个object对象,因此,原先的object对象值并不会发生变化;另外,.NET中预定义的string也是同样的道理。需要说明的是:装箱和拆箱操作是要额外耗费cpu和内存资源的,所以在C# 2.0之后引入了泛型来减少装箱和拆箱操作消耗,所以以后尽量用泛型即可,装箱和拆箱不推荐使用了。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照