【C#】值类型、引用类型、装箱与拆箱操作

数据类型

C#中有两种类型:引用类型值类型

引用类型的变量存储是对其数据(对象)的引用,而值类型的变量直接包含其数据

对于引用类型,两种变量可引用同一对象;因此,对一个变量执行的操作会影响另一个变量所引用的变量。

对于值类型,每个变量都具有其自己的数据副本,对一个变量执行的操作不会影响另一个变量(ref和out参数变量除外)。

例子:

 1 using System;
 2 
 3 namespace ConsoleApplication1
 4 {
 5     class Program
 6     {
 7         static void Main(string[] args)
 8         {
 9             //引用类型
10             int[] a = { 1, 2 };
11             int[] b = a;
12             Console.WriteLine(a[0]);        //1
13 
14             b[0] = 3;
15             Console.WriteLine(b[0]);        //3
16 
17             //值类型
18             int c = 5;
19             int d = c;
20             Console.WriteLine(c);           //5
21 
22             d = 7;
23             Console.WriteLine(c);           //5
24             Console.ReadKey();
25         }
26     }
27 }

数组是引用类型,当数组b引用数组a后,对b的任何操作都相当于对a进行操作。

int是值类型,当把变量c赋值给变量d后,对d的任何操作都不会影响到c。

 

 

 

装箱与拆箱

object类型:

类型在.NET Framework中是Object的别名。在C#的同一类型系统中,所有类型(引用类型和值类型)都是直接或间接从Object继承的。可以将任何类型的值赋给object类型的变量

 

装箱:将值类型转换为引用类型

拆箱:将引用类型转换为值类型

利用装箱拆箱功能,可通过允许值类型的任意类型与Object类型的值互相转换,将值类型与引用类型连接起来。

装箱操作:

int val = 100;                    //值类型
object obj = val;                //隐式转换成引用类型
Console.WriteLine("对象的值=" + obj);        //对象的值=100    

拆箱操作:

int val = 100;                //值类型
object obj = val;            //转换成引用类型
int num = (int) obj;        //强制转换成值类型
Console.WriteLine("num=" + num);        //num=100    

转载于:https://www.cnblogs.com/zh-44/p/9682915.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值