㈠值类型
值类型数据主要有:结构体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