值类型和引用类型的区别

㈠值类型  

  值类型数据主要有:结构体struct,枚举体enum,布尔类型bool,浮点型,整型。

  值类型继承system.ValueType.  值类型保存到栈stack中的是值。  

  值类型不可以包含null值,值类型不可以派生新的类型。  

  值类型变量赋给另一个值类型变量时,将复制包含的值。

㈡引用类型 

  引用类型数据主要有:数组,字符串,接口,委托,类。

  引用类型继承sytem.Object.  

  引用类型保存到栈中是地址。  

  引用类型可以派生新的类型。  

  引用类型变量赋值只复制对象的引用,不复制对象的本身。

如下代码:
    //定义一个类
    public class MyClass
    {
        //声明一个变量
        public int numberA;
    }

 

//定义一个结构
    public struct MyValue
    {
        //声明一个变量
        public int numberA;
    }

 

       static void Main(string[] args)
        {
            MyClass s1 = new MyClass(); //创建一个名为s1的对象,再给对象的变量赋值。
            s1.numberA = 12;

            MyClass s2 = s1;//声明一个类对象,名为s2,把s1中的值赋值给s2
            s2.numberA = 222;//把s2中的变量值改为222

            Console.WriteLine("s1的值为{0},s2的值为{1}",s1.numberA, s2.numberA);

            //创建一个名为r1的对象,再给对象的变量赋值。
            MyValue r1 = new MyValue();
            r1.numberA = 16;

            MyValue r2 = r1;
            r2.numberA = 666;

            Console.WriteLine("r1的值为{0},r2的值为{1}", r1.numberA, r2.numberA);

            Console.ReadLine();

        }

输出:s1  222,   s2   222

   r1  16,     r2   166

posted @ 2018-04-13 10:52  う奈何  阅读(94)  评论(0编辑  收藏  举报