码迷,mamicode.com
首页 > Windows程序 > 详细

读经典——《CLR via C#》(Jeffrey Richter著) 笔记_引用类型和值类型(二)

时间:2015-05-05 19:05:10      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

【引用类型和值类型的区别】

//引用类型(由于使用了‘class’)
class SomeRef  { public Int32 x; }

//值类型(由于使用了‘struct’)
struct SomeVal { public Int32 x; }

static void ValueTypeDemo() {
    SomeRef r1 = new SomeRef(); //在堆上分配
    SomeVal v1 = new SomeVal(); //在栈上分配
    r1.x = 5; //提另指针
    v1x = 5; //在栈上修改
    Console.WriteLine(r1.x); //显示”5“
    Console.WriteLine(v1.x);//显示”5“
  
    SomeRef r2 = r1; //只复制引用(指针)
    SomeVal v2 = v1;//在栈中分配并复制成员
    r1.x = 8;//r1.x和r2.x都会改变
    v1.x = 9;//v1.x 会更改,但v2.x不变

    Console.WriteLine(r1.x);//显示"8"
    Console.WriteLine(r2.x);//显示"8"
    Console.WriteLine(v1.x);//显示"9"
    Console.WriteLine(v2.x);//显示"5"
}

【图解】

 技术分享

读经典——《CLR via C#》(Jeffrey Richter著) 笔记_引用类型和值类型(二)

标签:

原文地址:http://www.cnblogs.com/lishidefengchen/p/4479863.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!