C#中的值类型与引用类型

C#中有哪些数据类型是  值类型: 数值类型(byte  short   int   long)、bool类型、char类型、枚举、结构
                                  引用类型:数组、string、类、接口、委托
所有的值类型继承自ValueType,所有的引用类型都继承自Object。


相同点:当变量作为一个局部变量的时候,无论这个局部变量的类型是引用类型还是值类型,这个变量始终开辟在栈空间之中。
            当变量作为一个成员变量的时候,无论这个变量的类型是引用类型还是值类型的,这个成员变量跟随者对象一起开辟在堆空间之中。
            因为字段属于对象的
不同点:
        存储结构不同:值类型变量存储的是真实的值,直接存储在栈空间中。
                             引用类型变量存储的是对象的地址,这个对象存储在堆空间中中。


因为两个类型变量存储的值不相同,不同类型的变量相互赋值的时候:


        1、首先,变量之间互相赋值,将原变量的值赋值一份给另一个变量。
        2、值类型变量之间赋值:因为值类型变量存储的是真实的值,所以复制传递的也是真实的值,赋值完以后,对一个变量修改不会影响到另一个变量。
               int num1 = 2;  int num2 = num1;  num2=5;
               Console.WriteLine(num1 + "  "  + num2);   输出结果是  2    5
               引用类型变量之间赋值:因为饮用类型变量存储的是对象的地址,所以复制传递的也是地址。赋值完以后,两个变量指向了同一个对象,对一个变量修改会影响另外一个变量指向的对象。


              string[] arrStr1 = new string[1] { "我是数组1" };  
              string[] arrStr2 = arrStr1;
              arrStr2[0] = "我是数组2";
              Console.WriteLine(arrStr1[0]);
              Console.WriteLine(arrStr2[0]);
输出结果是:
               我是数组2
               我是数组2


文中的不足之处,还请读者指出。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值