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

时间:2015-05-05 19:02:21   收藏:0   阅读:490

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

//引用类型(由于使用了‘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"
}

【图解】

 技术分享

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

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!