值类型与引用类型的学习总结

本文详细阐述了C#中引用类型与值类型的区别,包括它们在栈区与堆区的存储方式,以及值类型与引用类型在变量传递过程中的不同行为。通过代码实例分析,展示了引用类型如何实现共享资源和状态修改的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们知道 引用类型与值类型是C#中两个重要的概念,平时也会经常遇到。下面来简单阐述一下二者的区别。首先 值类型是在栈区存储,而引用类型则是在堆区存储。

一般值类型是直接存储变量值,而引用类型则是存储变量的引用(地址)。

   值类型包括 :int char 等这种简单类型,

   引用类型包括:接口 委托 string类型等

其中,值类型传递的是值的拷贝,引用类型传递的是值的引用(值的地址);


class Program
        {
            static void Main(string[] args)
            {
                Person yaohongbo = new Person() { Name = "姚宏波", Age = 29 };
                Person lilei = new Person() { Name = "李雷", Age = 22 };
     
                int age = yaohongbo.Age;
                yaohongbo.Age = 27;
     
                Person zhangsan = lilei;
                lilei.Name = "李磊";
     
                Console.WriteLine("yaohongbo的age:"+yaohongbo.Age);
                Console.WriteLine("age:" + age);
                Console.WriteLine("lilei的name:" + lilei.Name);
                Console.WriteLine("zhangsan的name:" + zhangsan.Name);
                Console.ReadKey();
            }
        }
        class Person
        {
             
            public string Name { get; set; }//引用类型
            public int Age { get; set; }//值类型
        }


执行结果为


参考:http://www.cnblogs.com/wenriyao/p/3952163.html

我们分析代码:

yaohongbo.Age是int类型,为值类型,所以int age=yaohongbo.Age 是复制值拷贝到另外一个内存区;

而person zhangsan = lilei; lilei.Name = "李磊";中,由于person为自定义的引用类型,引用传的是地址,

则zhangsan 也指向了lilei这一块内存区域,如果改变zhangsan内变量的值,lilei也会相应变化;

内存图如下:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值