• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
①只螃蟹?条腿™...
.NET世界是如此精彩,而我们要做的就是:Thinking More..
博客园    首页    新随笔       管理    订阅  订阅
值类型,再深入一点!

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..  阅读(230)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3