数值类型和引用类型的总结
值类型:将一个值类型变量赋给另一个值类型变量时,将复制包含的值。
例如    static void Main(string[] args)
       { int a = 5;                         // a赋值
     int b = a;                         // a赋给b
         Console.WriteLine(b);            }
结果为5
引用类型:引用类型的变量又称为对象,可存储对实际数据的引用。
             两者的区别
 
数值类型
引用类型
表示
实际数据
指向数据的引用
存储方式
将值存放在内存中
包含内存堆中对象的地址 
 
内存类型
存储在线程堆栈中
存储在托管堆中
实例
简单类型(整型,浮点、charbooldecimal,结构,枚举
 
类、接口、数组、字符串、委托
 
原理
 
 
static void Main(string[] args)
        {
            int a = 5;                         // a赋值5
            int b = a;                         // a赋给b
            b = 10;                            // b赋值10
            Console.WriteLine(a);    // a的值输出,查看的变化是否影响
        }
 
在线程堆栈中为a开辟一个地方存放a=5(int)
把a赋值给b时在线程中为b开辟一个地方b=5(int)当给b赋值10时b的值变为10,a不受影响。
引用类型
 
static void Main(string[] args)
        {
            int[] Array_a =new int[]{5};              // 定义一个数组,有一个无素5
            int[] Array_b =Array_a;                   // Array_a赋给 Array_b
            Array_b[0] = 10;                             // Array_b的唯一元素赋值10
            Console.WriteLine(Array_a[0]);     // Array_a的唯一元素的值输
                                                                  // ,查看Array_b中元素值的变
                                                                  // 化是否影响Array_a元素
        }
数组a的值存放在托管堆中,数组a和b在线程堆栈中,a和b共用一个值,当数组b赋值10时,在托管堆中的值变为10。