c#中关于值类型,引用类型在栈,堆栈的分配 [操作系统入门]

编程

 1class ClassType{

2publicint num{get;set;}

3}

4

5struct StructType{

6publicint num{get;set;}

7}

8

9staticvoid 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#中关于值类型,引用类型在栈,堆栈的分配

以上是 c#中关于值类型,引用类型在栈,堆栈的分配 [操作系统入门] 的全部内容, 来源链接: utcz.com/z/519360.html

回到顶部