值类型 与 引用类型 的区别

目录 

和上一篇一样,先做一道题,检测一下自己的基本功

 static void Main(string[] args)
        {
            User user1 = new User { Name = "zjf", Age = 24 };
            int age = user1.Age;
            user1.Age = 25;
            string name = user1.Name;
            user1.Name = "ljy";
            User user2 = new User { Name = "zjf", Age = 24 };
            User user = user2;
            user.Name = "ljy";
            user.Age = 25;
            Console.WriteLine("age=" + age);
            Console.WriteLine("user1.Age=" + user1.Age);
            Console.WriteLine("name=" + name);
            Console.WriteLine("user1.Name=" + user1.Name);
            Console.WriteLine();
            Console.WriteLine("user2.Name="+user2.Name);
            Console.WriteLine("user2.Age="+user2.Age);
            Console.ReadLine();
        }

        public class User
        {
            public string Name { get; set; }
            public int Age { get; set; }
        }

上面的代码,输出的结果是什么?

正确答案
24 
25 

zjf
ljy 

ljy 
25

如果你做对了,应该就很清楚 值类型 与 引用类型的区别了,就可以不看了(为了加深看一下也是可以的),如果错了,就要认真看了。

先介绍一下C#当中,哪个类型属于值类型,哪个属于引用类型,下面的图片来源于

从概念上看,值类型直接存储其值,而引用类型存储对其值的引用。

从内存空间上看,值类型是在栈中操作,而引用类型则在堆中分配存储单元。栈在编译的时候就分配好内存空间,在代码中有栈的明确定义,而堆是程序运行中动态分配的内存空间,可以根据程序的运行情况动态地分配内存的大小。  这两条参考

同时还参考如下文章

http://zhidao.baidu.com/question/429622136.html?fr=fd

http://www.cnblogs.com/coolbeibei/archive/2009/03/23/1419706.html

http://space.itpub.net/12639172/viewspace-501584

http://blog.csdn.net/tongyiyi/article/details/4029471

 

 

 

 

转载于:https://www.cnblogs.com/Fengger/archive/2012/07/11/2587011.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值