数据类型

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    
posted on 2018-09-20 19:48  非洲酋长  阅读(603)  评论(0编辑  收藏  举报