zoukankan      html  css  js  c++  java
  • c#中关于值类型,引用类型在栈,堆栈的分配

     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
  • 相关阅读:
    SQL通用数据类型
    SQL基础
    软件测试相关(1)
    C语言——判断
    C语言新手教程——计算
    并查集
    洛谷-P1551 亲戚
    洛谷-P1536 村村通
    洛谷-P1525 [NOIP2010 提高组] 关押罪犯
    洛谷-P2814 家谱
  • 原文地址:https://www.cnblogs.com/shi2310/p/13792783.html
Copyright © 2011-2022 走看看