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

c#中关于值类型,引用类型在栈,堆栈的分配

时间:2020-10-10 18:03:24      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:style   rgb   引用   code   tty   png   console   堆栈   ati   

 1 class ClassType{
 2     public int num{get;set;}
 3 }
 4        
 5 struct StructType{
 6     public int num{get;set;}
 7 }
 8        
 9 static void Main(string[] args)
10 {
11           StructType s1=new StructType();
12           s1.num=1;
13           
14           StructType s2=s1;
15           s2.num=2;
16           
17           ClassType c1=new ClassType();
18           c1.num=3;
19           
20           ClassType c2=c1;
21           c2.num=4;
22           
23           Console.WriteLine(s1.num);
24           Console.WriteLine(s2.num);
25           Console.WriteLine(c1.num);
26           Console.WriteLine(c2.num);
27 }

最终输出 1 2 4 4

演变分析:

技术图片

 

 

 技术图片

 

 技术图片

 

补充说明:

string虽然是引用类型,但是其具有不变性:字符串一经创建,就不可改变

string a="1";// 字符串a指向“1”
string b=a;// 字符串a,b指向“1”
a="2";// 字符串横定性是指一个字符串一经创建,就不可改变。那么也就是说当我们改变string值的时候,便会在托管堆上重新分配一块新的内存空间,而不会影响到原有的内存地址上所存储的值。
          
Console.WriteLine(a);
Console.WriteLine(b);

返回 2 1

 

c#中关于值类型,引用类型在栈,堆栈的分配

标签:style   rgb   引用   code   tty   png   console   堆栈   ati   

原文地址:https://www.cnblogs.com/shi2310/p/13792783.html

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