①只螃蟹?条腿™...
.NET世界是如此精彩,而我们要做的就是:Thinking More..
随笔- 16  文章- 1  评论- 7 
博客园  首页  新随笔    管理  订阅 订阅
值类型,再深入一点!

1)首先定义一个结构

        struct Person
        
{
            
public int Age;
        }

2)然后将值类型装箱

static void Main ( string[] args )
    
{
        Person p 
= new Person();
        p.Age 
= 1;

        
// 将值类型装箱
        object obj = p;

        p.Age 
= 2;

        Console.WriteLine( p.Age );
        Console.WriteLine( ((Person)obj).Age );
    }

最后结果输出:2和1

小结:
      在将值类型装箱时,其实是得到了当前值类型的一个副本,而不是引用(通常类之间传递的都是引用),说得简单一些就是将该值类型的信息复制到obj中,复制完后,obj将不再依赖于原先的Person p,所以对p.Age重新赋值,也不会再影响到obj。
      如果这里不是struct Person而是class Person的话,那么最后输出的结果则都为2,因为赋给obj的是变量p的引用。
      同样的道理,如果对int等值类型的变量进行装箱,结果也和上面一样。
posted on 2008-05-11 21:43 A.feng.. 阅读(68) 评论(0) 编辑 收藏
刷新评论刷新页面返回顶部
程序员问答社区,解决您的IT难题
博客园首页博问新闻闪存程序员招聘知识库
Copyright ©2012 A.feng..